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

时间:2015-10-20 06:32:30   收藏:0   阅读:327

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

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

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!