以格式字符串列出理解?(蟒蛇)

Sah*_*and 7 python string format list-comprehension list

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

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

我不喜欢打datalist[index]那么多次,觉得应该有更有效的方法.我试过了:

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

但这不起作用:

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

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

jua*_*aga 6

是的,使用参数解压缩"splat"运算符*:

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

编辑

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

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

  • 您也可以使用格式字符串""{0 [0]}'::'{0 [1]}'::'{0 [2]}''{0 [3]}'\n"进行索引.format(数据列表)` (4认同)