什么是创建相同元素数量为n的列表最有效的方式?
number = 1
elements = 1000
thelist = [number] * elements
>>> [1] * 10
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
注意:不要试图像这样复制可变对象(尤其是嵌套列表),否则会发生以下情况:
In [23]: a = [[0]] * 10
In [24]: a
Out[24]: [[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
In [25]: a[0][0] = 1
In [26]: a
Out[26]: [[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]
如果您正在使用numpy,对于多维列表,numpy.repeat
是您的最佳选择。它可以在不同的轴上重复所有形状的数组。numpy
,所以可能要提到numpy.repeat(1, 10)
吗?(尽管在n
非常大时,它会比乘以列表慢。) - DSMa = np.empty((elements,), dtype=np.int); a.fill(number)
比 [number] * elements
更快。但返回的不是真正的列表。 - Jaimeempty
+ fill
比 repeat
更快。 - Warren Weckesser