一、问题
如果使用以下代码建立二维列表的话,的确可以建立一个3*3的二维列表
m = n = 3
test = [[0] * m] * n
print("test =", test)
但是如果对列表的第一个值进行修改
test[0][0] = 233
print("test =", test)
则会发现,将test打印出来的结果如下:
test = [[233, 0, 0], [233, 0, 0], [233, 0, 0]]
它会将连带的test[1][0]、test[2][0]也全部都修改成233,导致这种现象形成的原因是由于每一行的第一列的元素都指向同一个指针。
二、解决方案
1、使用如下代码进行二维列表的创立即可:
test = [[0 for i in range(m)] for j in range(n)]
2、使用numpy模块中的list:
import numpy as np
test = np.zeros((m, n), dtype=np.int)