2013-03-30 34 views

回答

11
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是你最好的選擇。它可以在單獨的軸上重複所有形狀的陣列。

+2

這個問題也被標記爲'numpy',所以可能會提及'numpy.repeat(1,10)'? (儘管直到'n'真的很大才會比乘以列表要慢。) – DSM

+2

請注意,這可能會有意想不到的結果(取決於您知道多少Python變量的工作原理) - 它會生成一個列表引用同一個對象。 –

+0

爲了表示numpy標籤,'a = np.empty((elements,),dtype = np.int);對於'elements'的更高值,a.fill(number)'比'[number] * elements'快得多。但是回報並不是真正的清單。 – Jaime

相關問題