拷贝:对值进行复制的过程
# 值拷贝:应用场景最多
ls = [1, 'abc', [10]]
ls1 = ls # ls1直接将ls中存放的地址拿过来
# ls内部的值发生任何变化,ls1都会随之变化
ls2 = ls.copy() # 新开辟列表空间,但列表中的地址都是直接从ls列表中拿来
# ls内部的可变类型值发生改变,ls2会随之变化
ls3 = deepcopy(ls) # 新开辟列表空间,ls列表中的不可变类型的地址直接拿过来,但是可变类型的地址一定重新开辟空间
# ls内部的所有类型的值发生改变,ls3都不会随之变化
ls1 = [300000000000000000000000000000000, 1, 2, [10, 20]]
值拷贝
ls2 = ls1 print(id(ls1), id(ls2)) ls1[0] = 30 print(ls1, ls2)
浅拷贝
ls3 = ls1.copy() print(id(ls1), id(ls3)) ls1[0] = 30 print(ls1, ls3) ls1[3][0] = 100 print(ls1, ls3)
del ls1[1] print(ls1, ls1[1]) print(ls3, ls3[1])
深拷贝
from copy import deepcopy ls4 = deepcopy(ls1) print(ls1, ls4) print(id(ls1), id(ls4)) print(">>>>>>>>>>>>", id(ls1[0]), id(ls4[0])) print(id(ls1[-1]), id(ls4[-1]))
ls1[0] = 30 ls1[-1][0] = 100 print(ls1, ls4)
参考链接:https://www.cnblogs.com/xueli/p/4952063.html