Chinaunix

标题: python list 嵌套问题 [打印本页]

作者: cs221313    时间: 2009-06-03 17:41
标题: python list 嵌套问题
我定义了如下list:

a = [['',0]] * 5

然后我想对第一个list中的数字进行赋值。代码如下:

a[0][1] = 5

当我打印a的时候发现所有的数字都改了。结果如下:
>>> print a
[['', 5], ['', 5], ['', 5], ['', 5], ['', 5]]

哪位大虾能否解释一下为什么. 如果我只想改第一个list的数值,怎么做?

谢谢

[ 本帖最后由 cs221313 于 2009-6-3 04:43 编辑 ]
作者: xiaoyu9805119    时间: 2009-06-03 17:48
a = [['',0] for i in xrange(5)]  
a[0][1] = 5
作者: 千年沉寂    时间: 2009-06-03 18:02
a = [['',0]] * 5
只是对['',0]进行了浅拷贝
作者: izhier    时间: 2009-06-03 19:04
a = [['',0]] * 5
复制的是引用
作者: xiaoyu9805119    时间: 2009-06-04 08:12
在邮件组也有讨论的
https://groups.google.com/group/ ... ad/b6643156424ca337
作者: cs221313    时间: 2009-06-04 09:20
标题: 问题解决了。
非常感谢大家的回答。受益匪浅。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2