码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-10-20 06:34:53      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

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

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

 

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

标签:

原文地址:http://www.cnblogs.com/catmilk/p/4893541.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!