在編寫python項目時,我發現一個奇怪的行爲,當我嘗試更改另一個列表中的列表值時。更改列表中的列表值時的奇怪行爲
不工作代碼:
lst = []
to_add = [None,None,None]
for i in range(3):
lst.append(to_add)
for i in range(3):
lst[i][0] = anotherslistoflists[i][0]
令我吃驚的這個例子給了意想不到的效果。具體而言,每個lst [i] [0]都被分配了相同的值,該值是「anotherlistoflists」列表的最後一個索引中的第一個元素。
結果示例(打印時LST)
("word1",None,None)
("word1",None,None)
("word1",None,None)
工作代碼:
lst = []
for i in range(5):
lst.append([None,None,None])
# same code as above
結果示例2(預期結果)
("word1",None,None)
("word2",None,None)
("word3",None,None)
當然,正如你所看到的問題已經解決,但我想知道爲什麼第一個代碼不起作用。 「to_add」列表可能有問題,但我不明白這裏有什麼問題。
好了,所以做列表(to_add)我創造to_add列表的一個新的獨立實例。我現在明白了。謝謝! – pirox22