Chinaunix

标题: 刚看到一个很有意思的问题,大家看看,我反正看不出来为什么.. [打印本页]

作者: t6760915    时间: 2010-06-12 14:42
标题: 刚看到一个很有意思的问题,大家看看,我反正看不出来为什么..
rt
作者: jjj137    时间: 2010-06-12 14:57
本帖最后由 jjj137 于 2010-06-12 14:59 编辑

[[0,0]]*3 创建的都是指向 [0,0] 这个 list 对象的引用。相当于:
  1. a = [0,0]
  2. b = [a] * 3
复制代码
而 [[0,0],[0,0],[0,0]] 创建了三个对象,相当于:
  1. a = [0,0]
  2. b = [0,0]
  3. c = [0,0]
  4. d = [a, b, c]
复制代码

作者: Kabie    时间: 2010-06-12 19:04
没错……所以建立的时候还是用列表解析比较合适……
作者: luffy.deng    时间: 2010-06-12 22:23
本帖最后由 luffy.deng 于 2010-06-12 23:57 编辑

实际上你只要这样  就知道什么了。
  1. b=[[0,0]]*3
  2. print id(b[0]),id(b[1]),id(b[2])
  3. b=[[0,0],[0,0],[0,0]]
  4. print id(b[0]),id(b[1]),id(b[2])
复制代码

作者: milujite    时间: 2010-06-13 16:09
学习了,是否属于浅拷贝和深拷贝的问题。
作者: wqjwftcaqr    时间: 2010-06-14 13:33
回复 5# milujite


    应该是的,列表和字符串被引用时情况不一样的
作者: kgd924    时间: 2010-06-14 20:03
需要系统的学习.
作者: luffy.deng    时间: 2010-06-14 20:54
跟浅拷贝和深拷贝无关。
作者: 2gua    时间: 2010-06-18 12:58
这个帖子的讨论,还是对初学者很有帮助的。




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