>>> import copy >>> a=[1,2,[3,4]] >>> b=a[:] >>> c=copy.copy(a) >>> d=copy.deepcopy(a) >>> id(a) 20055504 >>> id(b) 20074624 >>> id(c) 20063456 >>> id(d) 20070528 >>> a[2][0]='a' >>> print a [1, 2, ['a', 4]] >>> print b [1, 2, ['a', 4]] >>> print c [1, 2, ['a', 4]] >>> print d [1, 2, [3, 4]] |
原帖由 zhenglxd 于 2009-3-30 17:18 发表
>>> import copy
>>> a=[1,2,[3,4]]
>>> b=a[:]
>>> c=copy.copy(a)
>>> d=copy.deepcopy(a)
>>> id(a)
20055504
>>> id(b)
20074624
>>> id(c)
20063456
>>> id(d)
20070528
>>> a[2][0]='a'
...
原帖由 lin_style 于 2009-3-30 18:59 发表
不对
您还是没说清楚
hubby[0]='abc'
hubby = person[:]
这两个等号赋值区别。
对于['name', ['savings', 100.00]]来说,
为什么前者是浅浅拷贝,后者是深浅拷贝?
原帖由 zhenglxd 于 2009-3-30 19:17 发表
没那么多复杂的东西
=是赋值符 ,仅仅是把某个对象赋值给一个变量,不是创建一个新的变量
a=b 和a=b[:]是2个概念
浅copy和深copy 都是创建了一个新的对象
a=b[:] 是浅copy, 只有copy.deepcopy才是深 ...
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |