Python 如何复制对象

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() 方法避免了这些问题。让我们看看如何操作−

  • 在当前拷贝传递期间保留对象的备忘录字典。

  • 允许用户定义的类覆盖拷贝操作或要复制的组件集合。

安装和导入拷贝模块

使用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]]

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程