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

3

这似乎是一个早已有答案的问题,但我没有找到。如果有人知道已经回答了这个问题的其他问题,请在评论中发布链接。

我的问题是,是否有一种方法可以使用.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])

如果我尝试类似这样的操作,它是行不通的,会出现“元组索引超出范围”的错误,因为它只将其视为一个项目而不是四个单独的项目。我只是想知道是否有可能实现。

3个回答

7
您可以简单地拆开列表:
>>> 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'
>>>

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

谢谢,这正是我所需要的。 - Jordan Pool

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的解决方案更好、更高效。

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

我希望它能够输出像这样的结果 4 3 2 1,但它返回了一个空字符串。 我不明白为什么它返回一个空字符串。 我是新手,请详细解释代码片段的第二行给我。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接