python浅拷贝深拷贝

来源:互联网 发布:有淘宝帐号怎么开网店 编辑:程序博客网 时间:2024/05/16 10:40
copy_list=list[:]  得到的是浅拷贝,即只能顶层拷贝,里面的嵌套不会复制一份。

a = [0, [1, 2], 3]b = a[:]a[0] = 8a[1][1] = 9

 请问现在a和b分别是多少?

答案:是 a 为 [8, [1, 9], 3],b 为 [0, [1, 9], 3]。 b的第二个元素也被改了。想不通看下面:

 

 

深拷贝方法如下:

import copya = [0, [1, 2], 3]b = copy.deepcopy(a)a[0] = 8a[1][1] = 9

 

 

int,float,long,str,tuple为不可变对象

list,set,dict为可变对象

不可变对象指的是值的不可变,所以它的每一次操作都会重建对象

打个比方:

a=1a=2

 这里虽然看上去a的值可以改变,但其实是创建了一个新的对象2,然后将a的标签贴到这个2的对象上,原来那个1还在那里等待垃圾回收。

0 0
原创粉丝点击