7
是可能的「填充」 Python中的數組,像這樣:在Python使唯一對象列表
> [0] * 10
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
我想用這個樣本的原則,以快速建立類似的對象列表:
> a = [{'key': 'value'}] * 3
> a
[{'key': 'value'}, {'key': 'value'}, {'key': 'value'}]
但現在看來,這些對象是環環相扣:
> a[0]['key'] = 'another value'
> a
[{'key': 'another value'}, {'key': 'another value'}, {'key': 'another value'}]
由於Python沒有一個clone()
方法(這是我尋找的第一件事),我將如何創建獨特的對象,而無需聲明for
循環並呼籲append()
添加它們?
謝謝!
FWIW,在''copy.copy()''函數可用於 「克隆」 多種現有Python對象。另外,一些可變對象(deques,set,dicts)有一個''copy()''方法。該列表對象在Python 3中增加了一個'copy()''方法。 –
由於問題已關閉,因此我必須使用註釋來回答問題的有趣部分,「如何在沒有for - 循環和追加?「這是你可以做的:''d = {'key':'value'};導入副本;從itertools導入重複; a = list(map(copy.copy,repeat(d,10)))''。當有''copy()''方法可用時,使用* starmap *會更快:''a = list(starmap(d.copy,repeat((),10)))''。 –