多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # `=`号 对引用的是改变指向 # 深拷贝 无论多少层都拷贝 ## 一维list ~~~ import copy a = [11, 22] b = [33, 44] c = copy.deepcopy(a) print(id(a)) print(id(c)) ~~~ 输出 ~~~ 4608488584 4608228168 ~~~ 结论: 不同的内存地址 ## 二维list **这边要用append测, 用=号的话,就改变引用了** ~~~ import copy b = [[55, 66], [77, 88]] a = [b, [33, 44]] c = copy.deepcopy(a) print(id(c)) print(id(a)) print('---校验第一个元素---') b.append([12, 13]) print(a) print(c) ~~~ 输出 ~~~ 4638795016 4637784840 ---校验第一个元素--- [[[55, 66], [77, 88], [12, 13]], [33, 44]] [[[55, 66], [77, 88]], [33, 44]] ~~~ 结论: 全部拷贝了 # 浅拷贝 只拷贝第一层 ## 一维list ~~~ import copy a = [11, 22] b = [33, 44] c = copy.copy(a) print(id(a)) print(id(c)) ~~~ 输出 ~~~ 4627542472 4627289672 ~~~ 结论: 不同的内存地址 ## 二维list ~~~ import copy b = [[55, 66], [77, 88]] a = [b, [33, 44]] c = copy.copy(a) print(id(c)) print(id(a)) print('---校验第一个元素---') b.append([12, 13]) print(a) print(c) ~~~ 输出 ~~~ 4598438664 4599333320 ---校验第一个元素--- [[[55, 66], [77, 88], [12, 13]], [33, 44]] [[[55, 66], [77, 88], [12, 13]], [33, 44]] ~~~ 结论: 只是第一层拷贝 # 元组 ~~~ import copy a = (11, 22) b = copy.deepcopy(a) print(id(a)) print(id(b)) ~~~ 输出 ~~~ 4622717256 4622717256 ~~~ 结论: 元祖是不可变的,所以拷贝没意义