2024-09-21 09:35:50 发布
网友
假设我有这个清单:
[1,2,3,4]
我想要:
最好的办法是什么?在
我目前的方法是创建一个新列表:
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]]
看起来很近但没有雪茄。。。有人能帮忙吗?在
您可以使用itertools.chain()或chain.from_iterable()展开列表列表(在您的例子中是y):
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]
一些性能比较:
始终可以使用reduce
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在语义上确实更干净,谢谢你,史蒂文:
itertools.repeat
您可以使用
itertools.chain()
或chain.from_iterable()
展开列表列表(在您的例子中是y
):一些性能比较:
^{pr2}$始终可以使用
reduce
在
^{pr2}$itertools.repeat
在语义上确实更干净,谢谢你,史蒂文:相关问题 更多 >
编程相关推荐