前言:
在處理列表和字典時,盡管傳遞引用常常是最方便的方法,但如果函數修改了傳入的列表或字典,可能不希望這些變動影響原來的列表或字典。要做到這一點,Python
提供了名為copy
的模塊,其中包含copy()
和deepcopy()
函數。
第一個函數copy.copy()
,可以用來復制列表或字典這樣的可變值,而不是只復制引用。
兩者的區別是copy.copy()
是這復制了列表或字典的值,但是引用還是同一個。而copy.deepcopy()
是產生一個新的引用使新的變量和被復制變量引用不同。
看下面的示例代碼:
1、copy.copy()
示例代碼:
1
2
3
4
5
|
import copy spam = [ 'A' , 'B' , 'C' , 'D' ,[ 1 , 2 , 3 , 4 ]] cheese = copy.copy(spam) spam[ 0 ] = 42 print (spam) |
運行結果:
[42,'B','C','D',[1,2,3,4]]
根據結果可以看出,使用copy.copy()
函數時,cheese
是復制了spam
列表引用,對spam
列表操作時,也會對cheese
列表產生影響。這也被稱為淺copy
。
2、deepcopy.copy()
示例代碼:
1
2
3
4
5
6
|
#Python學習交流群:778463939 import copy spam = [ 'A' , 'B' , 'C' , 'D' ,[ 1 , 2 , 3 , 4 ]] cheese = copy.deepcopy(spam) #不同部分 spam[ 0 ] = 42 print (spam) |
運行結果:
[42,'B','C','D',[1,2,3,4]]
根據結果可以看出,使用deepcopy()
時,對spam
列表操作不會對cheese
列表產生影響,這是因為deepcopy()
是產生一個新的引用,這樣spam
和cheese
是兩個不同的引用所以在對spam
列表操作時不會對cheese列表產生影響。
到此這篇關于Python 中的 copy()和deepcopy()的文章就介紹到這了,更多相關Python copy()和deepcopy()內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://www.cnblogs.com/python960410445/p/14459645.html