深浅拷贝
在python中深浅拷贝是有差异的如果使用的时候不注意就可能发生意外结果
拷贝的原则上就是把数据分离出来,复制其数据并在以后发生修改互不影响。
浅拷贝
list1=[1,2,3,[‘a’,‘b’]]
list2=list1.copy()
print(list1,id(list1))
print(list2,id(list2))
两个的地址发生了改变
list1[1]=5
print(list1,id(list1))
print(list2,id(list2))
在更改list1时 list2并没有改变,也就是说更改第一层并不能影响list2
list1[3][0]=‘c’
print(list1,id(list1[3]))
print(list2,id(list2[3]))
list2也跟着改变了,而且地址也是一样的,所以说浅拷贝只能在不改变其他元素的条件下拷贝第一层
深拷贝
深拷贝的数据完全不共享,是直接复制其数据完全独立放在的一个内存中,深拷贝要用到模块 copy
import copy
list1=[1,2,3,[‘a’,‘b’]]
list2=copy.deepcopy(list1)
print(list1,id(list1))
print(list2,id(list2))
拷贝后的地址也不一样
list1[1]=5
print(list1,id(list1))
print(list2,id(list2))
现在更改list1中的元素list2中并没有发生改变
list1[3][0]=‘c’
print(list1,id(list1[3]))
print(list2,id(list2[3]))