這看起來像Python將有一個快捷方式。我想一個項目追加到列表N次,有效地這樣做:Python:追加項目N次
l = []
x = 0
for i in range(100):
l.append(x)
這似乎對我來說,應該有對於「優化」方法,是這樣的:
l.append_multiple(x, 100)
在那兒?
這看起來像Python將有一個快捷方式。我想一個項目追加到列表N次,有效地這樣做:Python:追加項目N次
l = []
x = 0
for i in range(100):
l.append(x)
這似乎對我來說,應該有對於「優化」方法,是這樣的:
l.append_multiple(x, 100)
在那兒?
對於不可改變的數據類型做到這一點:
l = [0] * 100
# [0, 0, 0, 0, 0, ...]
l = ['foo'] * 100
# ['foo', 'foo', 'foo', 'foo', ...]
對於值由基準存儲,你不妨再進行修改(如子列表,或者字跡):
l = [{} for x in range(100)]
(之所以第一種方法只是恆定值的好主意,lik e整數或字符串,是因爲使用<list>*<number>
語法時僅使用淺拷貝,因此如果您執行了類似[{}]*100
的操作,則最終會有100個對同一字典的引用 - 因此更改其中一個將會將它們全部更改。因爲int和字符串是不可變的,所以這對他們來說不是問題。)
如果要添加到現有列表中,可以使用該列表的extend()
方法(結合生成列表通過上述技術添加的東西):
a = [1,2,3]
b = [4,5,6]
a.extend(b)
# a is now [1,2,3,4,5,6]
你可以用一個列表理解
l = [x for i in range(10)];
Itertools重複與列表擴展結合使用。
from itertools import repeat
l = []
l.extend(repeat(x, 100))
我不得不去另一條路線做任務,但這是我結束了。
my_array += ([x] * repeated_times)
結束了`l.extend([x] * 100)`因爲它最適合我的情況。琥珀獲得最全面的答案。謝謝! – Toji 2011-01-11 05:27:50
確保您理解Python的引用語義,然後才能將其用於任何非平凡的事情。附加到l的x都是相同的x,所以它們中的一個影響它們全部(全部都是100次)。 – 2011-01-11 09:35:38