浅copyspa
实现浅copy的几种方式:3d
1 import copy 2 3 name1=['Liyunlong',['alex','Tony'],'Xuliucheng'] 4 5 name2=copy.copy(name1) 6 name2=name1[:] 7 name2=name1.copy()
实现深copy的方式:code
1 import copy 2 3 name1=['Liyunlong',['alex','Tony'],'Xuliucheng'] 4 5 name2=copy.deepcopy(names) #注意copy.copy()依旧是浅copy
区别:blog
浅copy:复制列表是只是被复制列表的引用,只copy第一层,第二层copy内存地址内存
深copy:独立复制一份,复制列表与被复制列表无关class
例如:import
浅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结果:im
深copy以后更改列表第一层和第二层:d3
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)
结果为: