淺copy與深copy

淺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)

結果爲:

相關文章
相關標籤/搜索