python深浅拷贝
拷贝
lt=[1,2,3]
lt2=lt
lt.append(4)
print(lt)
# 因为列表是可变类型,所以lt值变化,lt2的值也会跟着变化
print(lt2)
[1,2,3,4]
[1,2,3,4]
浅拷贝
import copy
lt=[1,2,3,[4,5,6]]
lt2= copy.copy(lt)
lt[3].append(7)
print(lt)
print(lt2)
lt.append(4)
print(lt)
print(lt2)
[1, 2, 3, [4, 5, 6, 7]]
[1, 2, 3, [4, 5, 6, 7]]
[1, 2, 3, [4, 5, 6, 7], 4]
[1, 2, 3, [4, 5, 6, 7]]
深拷贝
import copy
l1 = ['a', 'b', 'c', ['d', 'e', 'f']]
l2 = copy.deepcopy(l1)
l1.append('g')
print(l1)
print(l2)
['a', 'b', 'c', ['d', 'e', 'f'], 'g']
['a', 'b', 'c', ['d', 'e', 'f']]
牢记:拷贝/浅拷贝/深拷贝 只针对可变数据类型
三者的定义
拷贝:当l2为l1的拷贝对象时,l1内的可变类型变化,lt2变化;l1内不可变类型变化,l2变化
简单的赋值
浅拷贝:当l2位l1的浅拷贝对象时,l1内的可变类型变化,l2变化;l1内的不可变类型变化,l2不变化
copy.copy() 可变数据的类型中的内置方法.copy()
深拷贝: 当l2为l1的深拷贝对象时,l1内的可变类型变化,l2不变化;l1内的不可变类型变化,l2不变化
copy.deepcopy()