如何在 Python 中複製物件?


在 Python 中,如果你想複製物件,賦值運算子將無法滿足目的。它在目標和物件之間建立繫結,即它永遠不會建立新的物件。它只建立一個新的變數,共享原始物件的引用。為了解決這個問題,提供了 copy 模組。此模組具有通用的淺複製和深複製操作。

淺複製

淺複製構造一個新的複合物件,然後將對原始物件中找到的物件的引用插入到其中。它使用以下方法複製物件  

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() 方法避免了這些問題。讓我們看看如何:

  • 保留已在當前複製過程中複製的物件的備忘錄字典

  • 允許使用者定義的類覆蓋複製操作或複製的元件集。

安裝並匯入 copy 模組

要安裝 copy 模組,請使用 pip:

pip install copy

安裝後要使用 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]]

更新於: 2022-09-15

2K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告