在 Python 2 中,我可以将列表传递给百分比格式运算符吗?

Jam*_*s B 6 python string list string-formatting python-2.x

我有一个要使用格式字符串打印的内容列表。在 Python 3 风格中,使用"a string".format(arg,arg,arg),这很容易。我可以用参数替换*mylist,比如

mylist = [1,2,3]
"{} {} {}".format(*mylist)
Run Code Online (Sandbox Code Playgroud)

我似乎无法使用旧的百分比格式来实现这一点。我已经尝试过诸如"%i %i %i" % mylist%i %i %i" % (mylist)、 and 之类的东西%i %i %i" % (*mylist),但我只是不断收到语法错误或“参数不足”。

这在 2.x 风格中是不可能的吗?

ETA:我正在更改上面的示例,我实际上指的是list,而不是tuple。我仍在学习,我不习惯拥有两个不同的类似数组的结构。

fal*_*tru 7

str % tuple应该可以工作。

>>> mylist = (1, 2, 3)  # <---- tuple
>>> "%i %i %i" % mylist
'1 2 3'
Run Code Online (Sandbox Code Playgroud)

顺便说一句,(1, 2, 3)是元组文字,而不是列表文字。

>>> mylist = [1, 2, 3]  # <----- list
>>> "%i %i %i" % mylist
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not list
Run Code Online (Sandbox Code Playgroud)

如果你想让它适用于列表,请将列表转换为元组。

>>> "%i %i %i" % tuple(mylist)
'1 2 3'
Run Code Online (Sandbox Code Playgroud)