其实这就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写的就是深复制
深复制就是里面元素的内存位址都不同
大概这样