浅谈Python中的深拷贝,浅拷贝

 Python中的赋值语言的实质,是改变变量与对象的绑定关系。
>>> l=[1,2,3]      #l变量绑定了一个列表
>>> l2=l           #l2与l绑定了同一个对象(列表)
>>> l.pop()
3
>>> l
[1, 2]
>>> l2
[1, 2]
>>> id(l)
139845581985736
>>> id(l2)
139845581985736
>>> 

通过以上例子看出,当l2改变时候,l也会同时改变。(因为它们同时绑定一个对象)
采用拷贝的方式就可以在改变l2的时候,l1不会改变

>>> l=[1,2,3]
>>> l1=l.copy()
>>> l1.pop()
3
>>> l1
[1, 2]
>>> l
[1, 2, 3]
>>> id(l)
139845581985736
>>> id(l1)
139845581986504
>>> 

  • 浅拷贝:
    是指在复制过程中,只复制一层变量,不会复制深层变量绑定对象的复制过程。
 >>> l=[11,12,13]
>>> l1=[1,2,l]
>>> l2=l1.copy()
>>> l.reverse()
>>> l
[13, 12, 11]
>>> l1
[1, 2, [13, 12, 11]]
>>> 12
12
>>> l2
[1, 2, [13, 12, 11]]
>>> id(l1)
139845582867912
>>> id(l2)
139845582010760
>>>    
  • 深拷贝 deep copy
    复制对象及对象关联的对象一起复制的过程
>>> import copy
>>> l1=[1,2,[3,4]]
>>> l2=copy.deepcopy(l1)
>>> del l2[2][1]
>>> l2
[1, 2, [3]]
>>> l1
[1, 2, [3, 4]]
>>>

猜你喜欢

转载自blog.csdn.net/Bala_Manaoano/article/details/82558605