python中深复制与浅复制的区别
深复制:即将原对象中所有的值完全复制一份放在内存中(包括可变数据类型对象),即使原对象更改,也不影响其值。
import copy
l1=[1,2,3,[1,2,3]]
l2=copy.deepcopy(l1)
l2[-1].append(4)
l1
这里l2是l1的深复制,即,代码第四行是在l2的最后一个元素添加一个数字4,但是l1的原来的内容没有发生变化,l1=[1,2,3,[1,2,3]],而l2=[1,2,3,[1,2,3,4]]
浅复制:浅复制和深复制是对应的一种复制(可能不太准确,我是这么理解的),浅复制列表时,当修改的元素为可变对象(常见的有list,dict,set),修改的操作会修改原列表。
import copy
l1=[1,2,3,[1,2,3]]
l2=copy.copy(l1)
l2[-1].append(4)
l1
这里的l2为l1的浅复制(copy),同上,但是这里与上面的不同的是,l1=[1,2,3,[1,2,3,4]],l2=[[1,2,3,[1,2,3,4]],很明显l1和l2一样的。
PS:以前看过一个表格,记录了这个深复制与浅复制的区别,忘记在哪了,找到了再来更新一下,python新手一枚,如果有写的不对地方,还请指教,谢谢