浅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)
结果为: