淺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)
結果爲: