作者:他们叫我红豆 | 来源:互联网 | 2023-10-10 09:06
浅copy实现浅copy的几种方式:实现深copy的方式:区别:浅copy:复制列表是只是被复制列表的引用,只copy第一层,第二层copy内存地址深copy:独立复制一份,复制列
浅copy
实现浅copy的几种方式:
1 import copy
2
3 name1=[‘Liyunlong‘,[‘alex‘,‘Tony‘],‘Xuliucheng‘]
4
5 name2=copy.copy(name1)
6 name2=name1[:]
7 name2=name1.copy()
实现深copy的方式:
1 import copy
2
3 name1=[‘Liyunlong‘,[‘alex‘,‘Tony‘],‘Xuliucheng‘]
4
5 name2=copy.deepcopy(names) #注意copy.copy()依旧是浅copy
区别:
浅copy:复制列表是只是被复制列表的引用,只copy第一层,第二层copy内存地址
深copy:独立复制一份,复制列表与被复制列表无关
例如:
浅copy之后更改列表第一层和第二层:
1 import copy
2
3 name1=[‘Liyunlong‘,[‘alex‘,‘Tony‘],‘Xuliucheng‘]
4
5 name2=copy.copy(name1)
6 name1[0]=‘Zhaogang‘
7 name2[1][0]=‘James Tao‘
8 print(name1)
9 print(name2)
浅copy结果:
深copy之后更改列表第一层和第二层:
1 import copy
2
3 name1=[‘Liyunlong‘,[‘alex‘,‘Tony‘],‘Xuliucheng‘]
4
5 name2=copy.deepcopy(name1)
6 name1[0]=‘Zhaogang‘
7 name2[1][0]=‘James Tao‘
8 print(name1)
9 print(name2)
深copy结果:
另外,使用等号复制列表相当于copy了前列表的全部地址:
1 name1=[‘Liyunlong‘,[‘alex‘,‘Tony‘],‘Xuliucheng‘]
2
3 name2=name1
4 name1[0]=‘Zhaogang‘
5 name2[1][0]=‘James Tao‘
6 print(name1)
7 print(name2)
结果为:
浅copy与深copy