如何增加python列表的大小并填充它?

2024-09-21 09:35:50 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有这个清单:

[1,2,3,4]

我想要:

^{pr2}$

最好的办法是什么?在

我目前的方法是创建一个新列表:

x = [1,2,3,4]
y = [[n]*4 for n in x]

这样可以得到:

[[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3], [4, 4, 4, 4]]

看起来很近但没有雪茄。。。有人能帮忙吗?在


Tags: 方法in列表for办法雪茄pr2
3条回答

您可以使用itertools.chain()chain.from_iterable()展开列表列表(在您的例子中是y):

In [23]: lis=[1,2,3,4]

In [24]: from itertools import chain

In [31]: y = list(chain(*([n]*4 for n in lis)))

In [32]: y
Out[32]: [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4]

一些性能比较:

^{pr2}$

始终可以使用reduce

reduce(lambda x, y: x+y, [[n]*4 for n in x])
>>> x = [1,2,3,4]
>>> [n for n in x for _ in range(4)]
    [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4]

itertools.repeat在语义上确实更干净,谢谢你,史蒂文:

^{pr2}$

相关问题 更多 >

    热门问题