在Python中,如果你想複製對象,賦值運算子將無法達到目的。它在目標和物件之間建立綁定,即它從不建立新物件。它僅創建一個共享原始物件引用的新變數。為了解決這個問題,提供了複製模組。此模組具有通用的淺複製和深複製操作。
淺拷貝建構一個新的複合對象,然後將參考插入到原始對象。它使用以下方法複製物件 −
#copy.copy(x) Return a shallow copy of x.
深拷貝建構一個新的複合對象,然後遞歸地將原始對像中的對象的副本插入其中。它使用以下方法複製物件 −
copy.deepcopy(x[, memo]) Return a deep copy of x. Here, memo is a dictionary of objects already copied during the current copying pass;
使用深拷貝運算可能會出現下列問題 -
遞迴可能會導致遞歸迴圈。
由於深層複製會複製所有內容,因此可能會複製過多,例如要在副本之間共享的資料。
然而,deepcopy() 方法避免了這些問題。讓我們看看如何 −
保留目前複製過程中已複製的物件的備忘錄字典
#允許使用者定義的類別覆寫複製操作或複製的元件集。
要安裝複製模組,請使用pip −
#pip install copy
在安裝後使用複製模組 −
import copy
我們將使用淺拷貝來複製物件。它創建一個新物件來儲存原始元素的參考。讓我們來看一個範例 −
import copy # Create a List myList = [[5, 10], [15, 20]] # Display the list print("List = ", myList) # Shallow Copy myList2 = copy.copy(myList) # Display the copy of the List print("New copy of the list =", myList2)
List = [[5, 10], [15, 20]] New copy of the list = [[5, 10], [15, 20]]
在上面的範例中,我們使用 copy() 方法淺複製了清單。
我們將使用 deepcopy() 方法來深度複製物件。深複製也會建立一個新物件。讓我們來看一個範例 −
import copy # Create a List myList = [[5, 10], [15, 20]] # Display the list print("List = ", myList) # Deep Copy myList2 = copy.deepcopy(myList) # Display the copy of the List print("New copy of the list =", myList2)
List = [[5, 10], [15, 20]] New copy of the list = [[5, 10], [15, 20]]
以上是如何在Python中複製物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!