python 深copy和浅copy问题

谁能帮我解释一下python 深浅拷贝。

上次面试,碰到一个问题:
a = [1,2,3,4,5]
b = a[1:3]
问我,这个过程是浅拷贝还是深拷贝。我蒙了个浅拷贝。不知对否?

    利用切片操作方法拷贝就叫浅拷贝,只是拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。

    利用copy中的deepcopy方法进行拷贝就叫做深拷贝,外围和内部元素都进行了拷贝对象本身,而不是引用。

但是对于数字,字符串和其他原子类型对象等,没有被拷贝的说法,即便是用深拷贝,查看id的话也是一样的,如果对其重新赋值,也只是新创建一个对象,替换掉旧的而已。

引用:http://www.01happy.com/python-shallow-copy-and-deep-copy/

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-13
这是赋值,何来拷贝
a = [1,2,3,4,5]
b = a[1:3]
b[0]=999
print a
print b
结果:
>>>
[1, 2, 3, 4, 5]
[999, 3]
>>>
可以看到b的改动不影响a,a和b指向内存不同的对象,没有拷贝
第2个回答  2013-08-13
这个是属于浅拷贝的

不过a里面的元素都是数值,浅拷贝深拷贝基本都是一样的
相似回答