我们说我有一个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
有人知道有效和简洁地实现这一目标的有效方法吗?
答案 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"
>>>
>>> "'{0[0]}'::'{0[1]}'::'{0[2]}' '{0[3]}'\n".format(datalist)
"'foo'::'bar'::'baz' 'fizz'\n"