Python深浅拷贝
拷贝/浅拷贝/深拷贝 只针对可变数据类型
拷贝(赋值)
当lt2为lt的拷贝对象时,lt内的可变类型变化,lt2变化;lt内的不可变类型变化,lt2变化
简单的赋值
lt = [1, 2, 3]
lt2 = lt
lt.append(4)
print(lt)
# 因为列表是可变类型,所以lt的值变化,lt2的值也会跟着变化
print(lt2)
浅拷贝
当lt2为lt的浅拷贝对象时,lt内的可变类型变化,lt2变化;lt内的不可变类型和变化,lt2不变化
copy.copy()
#lt2没有变化的情况
lt = [1, 2, 3]
lt2 = copy.copy(lt)
lt.append(4)
print(lt) # [1, 2, 3, 4]
print(lt2) # [1, 2, 3]
lt2变化的情况
lt = [1000, 2000, 3000, [4000, 5000, 6000]]
print('id(lt)',id(lt))
print('id(lt[0])', id(lt[0]))
print('id(lt[1])', id(lt[1]))
print('id(lt[2])', id(lt[2]))
print('id(lt[3])', id(lt[3]))
print('*' * 50)
lt2 = copy.copy(lt)
print('id(lt2)',id(lt2))
print('id(lt2[0])', id(lt2[0]))
print('id(lt2[1])', id(lt2[1]))
print('id(lt2[2])', id(lt2[2]))
print('id(lt2[3])', id(lt2[3]))
print('*' * 50)
lt.append(4)
print(lt) # [1, 2, 3, [4, 5, 6], 4]
print(lt2) # [1, 2, 3, [4, 5, 6]]
lt[-1].append(7)
print(lt) # [1, 2, 3, [4, 5, 6, 7]]
print(lt2) # [1, 2, 3, [4, 5, 6, 7]]
lt[0] += 1
print(lt)
print(lt2)
深拷贝
当lt2为lt的深拷贝对象时,lt内的可变类型变化,lt2不变化;lt内的不可变类型变化,lt2不变
copy.deepcopy()
import copy
lt = [1000, 2000, 3000, [4000, 5000, 6000]]
print('id(lt)',id(lt))
print('id(lt[0])', id(lt[0]))
print('id(lt[1])', id(lt[1]))
print('id(lt[2])', id(lt[2]))
print('id(lt[3])', id(lt[3]))
print('*' * 50)
lt2 = copy.deepcopy(lt)
print('id(lt2)',id(lt2))
print('id(lt2[0])', id(lt2[0]))
print('id(lt2[1])', id(lt2[1]))
print('id(lt2[2])', id(lt2[2]))
print('id(lt2[3])', id(lt2[3]))
print('*' * 50)
lt.append(4)
print(lt)
print(lt2)
lt[-1].append(7)
print(lt)
print(lt2)
![](D:\python\03 python进阶\day009\day 09\深浅拷贝.png)
标签:lt2,Python,lt,深浅,print,拷贝,copy,id From: https://www.cnblogs.com/JunLeewarehouse/p/17777350.html