>>> a = [[0]*10]*10
>>> a
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
>>> a[0][1]='a'
>>> a
[[0, 'a', 0, 0, 0, 0, 0, 0, 0, 0], [0, 'a', 0, 0, 0, 0, 0, 0, 0, 0], [0, 'a', 0, 0, 0, 0, 0, 0, 0, 0], [0, 'a', 0, 0, 0, 0, 0, 0, 0, 0], [0, 'a', 0, 0, 0, 0, 0, 0, 0, 0], [0, 'a', 0, 0, 0, 0, 0, 0, 0, 0], [0, 'a', 0, 0, 0, 0, 0, 0, 0, 0], [0, 'a', 0, 0, 0, 0, 0, 0, 0, 0], [0, 'a', 0, 0, 0, 0, 0, 0, 0, 0], [0, 'a', 0, 0, 0, 0, 0, 0, 0, 0]]
>>> id(a[0])
38418120L
>>> id(a[1])
38418120L
>>> id(a[2])
38418120L
uj5u.com熱心網友回復:
以前沒注意到這個問題。這樣初始化就沒問題.
a = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
Python 3.7.3
uj5u.com熱心網友回復:
的確是個坑,要這么操作才行。>>> a = [[0 for _ in range(10)] for _ in range(10)]
>>> a
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
>>> a[0][1] = 'a'
>>> a
[[0, 'a', 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
>>>
uj5u.com熱心網友回復:
謝謝回答,這個問題今天做實驗的遇到的,后來換用了numpy解決了問題。感覺第二次*10像是淺拷貝,沒有分配新記憶體。uj5u.com熱心網友回復:
主要是想把問題放這這討論討論為什么這樣,希望看到的人以后不要這樣用了,調bug真的費時間啊
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/113803.html
