需求:想通过python生成m行n列的矩阵
方式1:(有问题)
data = [[0]*3]*4 #4行3列 data
输出
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
修改data[0][0]元素的值
data[0][0] = 1 data
输出
[[1, 0, 0], [1, 0, 0], [1, 0, 0], [1, 0, 0]]
哇,是不是对结果很迷,为啥改变一个值会对列为0的所有元素改变呢?
解析:我们可以看下他们对应的内存指向地址
问题出在这里了。
方式2:
#输入 data1 = [[0 for i in range(3)] for j in range(4)] data1 # 输出 [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] #输入 data1[0][0] = 1 data1 #输出 [[1, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]