以格式字符串列出理解? (Python)的

时间:2017-08-23 20:33:35

标签: python string list format list-comprehension

我们说我有一个datalist列表,len(datalist) = 4。让我们说我希望列表中的每个元素都以这种方式用字符串表示:

s = "'{0}'::'{1}'::'{2}' '{3}'\n".format(datalist[0], datalist[1], datalist[2], datalist[3])

我不想多次输入datalist[index],并且觉得应该有更有效的方法。我试过了:

s = "'{0}'::'{1}'::'{2}' '{3}'\n".format(datalist[i] for i in range(4))

但这不起作用:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: tuple index out of range

有人知道有效和简洁地实现这一目标的有效方法吗?

1 个答案:

答案 0 :(得分:5)

是的,使用argument unpacking和&#34; splat&#34; operator *

>>> s = "'{0}'::'{1}'::'{2}' '{3}'\n"
>>> datalist = ['foo','bar','baz','fizz']
>>> s.format(*datalist)
"'foo'::'bar'::'baz' 'fizz'\n"
>>>

编辑

正如@AChampion所指出的,你也可以在格式字符串本身中使用索引:

>>> "'{0[0]}'::'{0[1]}'::'{0[2]}' '{0[3]}'\n".format(datalist)
"'foo'::'bar'::'baz' 'fizz'\n"