今天使用list 创建二维数组,使用方法是:
a=[[0]*3]*5
显示
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
看起来完美,结果修改其中一个元素 a[1][2]=1,显示如下:
[[0, 0, 1], [0, 0, 1], [0, 0, 1], [0, 0, 1], [0, 0, 1]]
明明我只修改了一个元素,为什么其他行的元素都变了。
官方的解释是
也就是说,A=[array]*5得到的只是5个array的引用,改变array,A中的元素都会改变。
使用list创建二维数组可以列表生成式法:
A=[[0 for i in range(n)]for j in range(m)]