其實這就py淺複製的問題
淺複製就是給新變數一個新的記憶體位址但新變數內的元素跟原變數是一樣的
以你的例子為例
a = [[[]]*3 for _ in range(3)]
print(id(a[0]))
print(id(a[1]))
print(id(a[0][0]))
print(id(a[0][1]))
print(id(a[1][0]))
print(id(a[1][1]))
result:
2558576809792
2558576852544
2558576953472
2558576953472
2558576809664
2558576809664
我們可以發現元素都指向同一個位置
所以修改a[0][0].append(1)
a[0][0] a[0][1] a[0][2] 都會受影響
然後推文裡面cp3寫的就是深複製
深複製就是裡面元素的記憶體位址都不同
大概這樣