python多维数组初始化后赋值的问题

当使用下述代码进行数组初始化时

>>>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]]

 

posted @ 2015-10-20 01:32  挖掘鸡  阅读(900)  评论(0)    收藏  举报