今天使用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)]

本文解析了在Python中使用list创建二维数组时的常见错误,详细解释了为何修改一个元素会导致整行变化的现象,并提供了正确的创建方法。
939

被折叠的 条评论
为什么被折叠?



