Python 中的深淺復(fù)制是一個很重要的概念。在 Python 中,有些數(shù)據(jù)類型是可以改變的,例如列表,字典等。當(dāng)我們創(chuàng)建一個新的變量,并將原有變量賦值給它時,有時會產(chǎn)生一些錯誤,這就需要使用深淺復(fù)制來解決。
首先,我們需要了解兩個概念:深復(fù)制和淺復(fù)制。淺復(fù)制是一種方法,可創(chuàng)建一個新的對象,該新對象與原對象共享原有對象的底層數(shù)據(jù)。深復(fù)制是一種方法,可創(chuàng)建一個新的對象,該新對象的內(nèi)容不再與原始對象共享。它們是兩種不同的復(fù)制方法。
# 例子 org = [[1, 2], [3, 4]] cpy = org.copy() # 淺復(fù)制 deep_cpy = copy.deepcopy(org) # 深復(fù)制 org[0][1] = 0 # 修改原來的列表 print(org) # [[1, 0], [3, 4]] print(cpy) # [[1, 0], [3, 4]] print(deep_cpy) # [[1, 2], [3, 4]]
上述代碼中,我們定義了一個二維列表,然后對原有列表中的一個值進行了修改。最后我們分別打印了三個不同的列表:org、cpy、deep_cpy,可以看到只有 deep_cpy 的值沒有改變,而 org 和 cpy 的值發(fā)生了改變。這是因為 org 和 cpy 是共享相關(guān)數(shù)據(jù)的淺復(fù)制,而 deep_cpy 則是一個全新的完整拷貝。
淺復(fù)制使用 copy() 方法來實現(xiàn),深復(fù)制使用 deepcopy() 方法來實現(xiàn)。深復(fù)制相較于淺復(fù)制速度更慢,但在某些情況下使用深復(fù)制是必須的,例如我們需要對某個對象進行遞歸操作,就需要使用深復(fù)制。
上一篇vue值是啥