创建一个3*3的2维数组
错误方法1:
array = [0, 0, 0] matrix = [array*3] print matrix
输出:[[0,0,0,0,0,0,0,0,0]],错误
错误方法2:
array = [0, 0, 0] matrix = [array] * 3 print matrix
输出:[[0, 0, 0], [0, 0, 0], [0, 0, 0]],看起来正确
但是:
matrix[0][1] = 1
print matrix
输出:[[0, 1, 0], [0, 1, 0], [0, 1, 0]],错误
为什么呢?因为matrix = [array] * 3操作中,只是创建3个指向array的引用,所以一旦array改变,matrix中3个list也会随之改变。
正确方法:
方法1 直接定义 matrix = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] 方法2 间接定义 matrix = [[0 for i in range(3)] for i in range(3)]
参考:https://www.cnblogs.com/woshare/p/5823303.html