Python中的填充列表

6

我该如何在Python中打印列表时进行填充?

例如,我有以下列表:

mylist = ['foo', 'bar']

我希望将这个填充到四个索引,并用逗号隔开打印出来。我知道我可以采用以下方式将其作为逗号和空格分隔的列表:

', '.join(mylist)

但是我应该如何用 'x' 填充四个索引,以便输出如下:
foo, bar, x, x

2
请注意:在编程中不要使用“list”作为变量名。 - ascobol
如果mylist包含五个项目,您想要什么结果? - Ethan Furman
@EthanFurman,问题很好,幸运的是我使用的代码不会出现这种情况。我猜它应该显示为foo, bar, baz, qux, wibble - Matthieu Cartier
3个回答

11
In [1]: l = ['foo', 'bar']

In [2]: ', '.join(l + ['x'] * (4 - len(l)))
Out[2]: 'foo, bar, x, x'

['x'] * (4 - len(l)) 生成一个列表,其中包含所需填充的正确数量的'x'条目。

编辑:有人问如果len(l) > 4会发生什么。在这种情况下,['x'] * (4 - len(l))结果为空列表,这是预期的。


1
如果len(l)大于4会发生什么? - ovgolovin
1
@ovgolovin:它按预期工作:将序列乘以负数会产生一个空序列(如果你想知道,这是记录的行为--我马上添加一个链接)。 - NPE

3

使用itertools的另一个可能性:

import itertools as it

l = ['foo', 'bar']

', '.join(it.islice(it.chain(l, it.repeat('x')), 4))

0
基于 itertools 中的 grouper() 配方:
>>> L = ['foo', 'bar']
>>> ', '.join(next(izip_longest(*[iter(L)]*4, fillvalue='x')))
'foo, bar, x, x'

这可能属于“不要在家里尝试”的类别。

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