因此,我搜索瞭如何用python的一些單元格初始化一個列表。用n個獨立實例初始化列表
我發現這句法
l = [T] * n
確定,但我通過這個得到了大量的疑難雜症-ED,尋找這是創造了一個多小時的bug的原因。 T
的實例在某種程度上是鏈接的,就好像這些單元對T
的單個實例的引用一樣!
但是這隻適用於一些類型。請參閱:
l1 = [int] * 10
print l1[0]
print l1[1]
l1[0] = 12
print l1[0]
print l1[1]
l2 = [Counter()] * 10
for key, value in l2[0].items():
print key, value
for key, value in l2[1].items():
print key, value
l2[0]["a"] +=1
for key, value in l2[0].items():
print key, value
for key, value in l2[1].items():
print key, value
輸出:
<type 'int'>
<type 'int'>
12
<type 'int'>
a 1
a 1
作爲一個方面的問題:爲什麼是這樣不一致,爲什麼重複的設計存在擺在首位?
那麼,如何在沒有這種奇怪的重複行爲的情況下使用T
的號碼進行初始化?
謝謝,這種行爲背後的設計理念是什麼? –
@lotolmencre可變類型在傳遞時不需要複製,只需引用它們即可,也可以修改它們。 (這比這更復雜一些,但你可以閱讀更多關於[這裏](https://docs.python.org/3/reference/datamodel.html))。 –