Python中有一個非常實用的庫——copy庫,它提供了深拷貝和淺拷貝的函數(shù),可以幫助我們更方便地復(fù)制數(shù)據(jù)。
import copy # 淺拷貝 a = [[1,2],3] b = copy.copy(a) # 此時a、b都指向[[1,2],3] # 修改a中的元素會影響b a[0][0] = 4 print(a) # [[4,2],3] print(b) # [[4,2],3] # 深拷貝 a = [[1,2],3] b = copy.deepcopy(a) # 此時a、b分別指向不同的對象 # 修改a不會影響b a[0][0] = 4 print(a) # [[4,2],3] print(b) # [[1,2],3]
在淺拷貝中,只拷貝了對象的引用,而不是對象本身,因此修改原對象會影響拷貝后的對象。而深拷貝會遞歸地復(fù)制對象,直到所有的引用都指向新的對象。
copy庫的應(yīng)用場景很多,例如在函數(shù)中傳遞列表或字典時,可以使用淺拷貝以避免修改原對象。在對多層嵌套的數(shù)據(jù)進行操作時,深拷貝也非常有用。