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

时间:2015-03-13 20:27:10

标签: python string string-formatting

这似乎是一个应该已经有答案的问题,但我找不到答案。如果有人知道已经回答过此问题的其他问题,请发表评论并附上链接。

我的问题是,有没有办法使用.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])

如果我沿着这些方向尝试某些东西,它将无效并且我将得到“元组索引超出范围”错误,因为它将此视为仅1个项而不是4个单独的项。我只是想知道这是否可行。

3 个答案:

答案 0 :(得分: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'
>>>

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

答案 1 :(得分:0)

您可以在列表理解中使用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的解决方案更好,更有效。

答案 2 :(得分:0)

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

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