标签:
当使用下述代码进行数组初始化时
>>>a = [[0]*3]*3 [[0,0,0], [0,0,0], [0,0,0]] >>>a[1][1] = 1 [[0,1,0], [0,1,0], [0,1,0]] >>>b = [[0,0,0],[0,0,0],[0,0,0]] [[0,0,0], [0,0,0], [0,0,0]] >>>b[1][1] = 1 [[0,0,0], [0,1,0], [0,0,0]]
这是因为初始化的问题,因为用a = [[0]*3]*3 初始化数组的,表示的是指向这个列表的引用,所以当你修改一个值的时候,整个列表都会修改。
如果你初始化的时候是b=[[0,0,0],[0,0,0],[0,0,0]] 那么上面的操作就不会修改其他部分的元素值.
若要想对多维数组快速初始化,可以用以下方式:
>>>c = [] >>>while i<LENGTH: ... c.append([0]*3) ... [[0,0,0], [0,0,0], [0,0,0],] >>>c[1][1] = 1 [[0,0,0], [0,1,0], [0,0,0]]
标签:
原文地址:http://www.cnblogs.com/catmilk/p/4893541.html