Python:使用 .format 方法用列表项填充字符串

Python: using .format method to populate string with list items

这似乎是一个应该已经有答案的问题,但我没有找到答案。如果有人知道另一个问题已经回答了这个问题,请 post 评论 link。

我的问题是,有没有办法使用 .format 方法将列表中的项目输入到字符串中?使用特定的索引来格式化有点痛苦,我想知道是否可以使用 "for i in list" 技术。

所以而不是这样:

 x = [1, 2, 3, 4, 5]

print 'The first 4 items in my list are {}, {}, {}, {}'.format([x[0], x[1], x[2], x[3])

我可以这样做:

x = [1, 2, 3, 4, 5]

print 'The first 4 items in my list are {}, {}, {}, {}'.format([i for i in x if i < 5])

如果我沿着这些方向尝试某些东西,它不会起作用,我会得到一个 "tuple index out of range" 错误,因为它认为这只是 1 个项目而不是 4 个单独的项目。我只是想知道这是否可能。

您可以简单地解压缩列表:

>>> x = [1, 2, 3, 4, 5]
>>> 'The first 4 items in my list are {}, {}, {}, {}'.format(*x)
'The first 4 items in my list are 1, 2, 3, 4'
>>>

任何剩余的参数都将被忽略。

您可以在列表理解中使用 string.join()

x = [1, 2, 3, 4, 5]

print 'The first 4 items in my list are {}'.format(', '.join([str(i) for i in x if i < 4]))
# The first 4 items in my list are 1, 2, 3

注意:这只打印 三个 元素,因为 x 中只有 3 个元素匹配 < 4

如果您的列表推导只是尝试只输出 4 个元素,并且您对使用列表推导并不真正感兴趣,那么 iCodez 的解决方案会更好、更高效。

rev_arr = [4,3,2,1]
str_arr.format(', '.join([str(element) for element in rev_arr]))

我希望它应该给出这样的输出 4 3 2 1 但它返回一个空字符串。 我不明白为什么它返回一个空字符串。 我是新手请详细说明片段的第二行给我