首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么python字符串格式化需要元组?为什么列表不起作用?

为什么python字符串格式化需要元组?为什么列表不起作用?
EN

Stack Overflow用户
提问于 2019-06-24 08:56:22
回答 3查看 257关注 0票数 1

令我惊讶的是,python的百分比样式格式不接受列表,似乎只接受元组。这里的元组有什么特别之处?为什么列表会抛出错误?

代码语言:javascript
复制
In [1]: '%s %s' % ('hello', 'kilojoules')                                                     
Out[1]: 'hello kilojoules'

In [2]: '%s %s' % ['hello', 'kilojoules']                                                     
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-764f27542c69> in <module>
----> 1 '%s %s' % ['hello', 'kilojoules']

TypeError: not enough arguments for format string
EN

回答 3

Stack Overflow用户

发布于 2019-06-24 09:00:06

你用来格式化字符串的方式是一种特殊的语法。在您显示的列表示例中,它将非元组(列表)转换为字符串,然后再尝试将其用于格式化目的。

您可以通过使用format方法来完成您想要做的事情。

代码语言:javascript
复制
In [1]: "{} {}".format(*['hello', 'kilojoules'])

不管怎么说,我们还是推荐这样做的,as it is preferred

票数 3
EN

Stack Overflow用户

发布于 2019-06-24 09:08:46

此外,在python3.6中的最新更新中,您可以像这样使用f-String:

代码语言:javascript
复制
> great = "hello"
> name = "kilojoules"

> f"{great} {name}"
'hello kilojoules'

这个website很好地总结了不同的方法。

票数 2
EN

Stack Overflow用户

发布于 2019-06-24 09:12:23

文档(https://python-reference.readthedocs.io/en/latest/docs/str/formatting.html)直接回答了您的问题:“如果格式说明符需要单个参数,则值可以是单个非元组对象。否则,值必须是具有格式字符串指定的项数的元组,或者是单个映射对象(例如,字典)。”列表既不是,也不是,所以它不起作用。

正如其他人所指出的,您可以使用.format来实现更现代的方法,甚至可以使用更现代的f-string,它与原始示例一样简洁:

代码语言:javascript
复制
one_way = '{} {}'.format(*['hello', 'kilojoules'])
lst = ['hello', 'kilojoules']
another_way = f'{lst[0]} {lst[1]}'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56728749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档