在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() 方法避免了这些问题。让我们看看如何 −
-
保留当前复制过程中已复制的对象的备忘录字典
-
允许用户定义的类覆盖复制操作或复制的组件集。
安装和导入copy模块
要安装复制模块,请使用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中复制对象?的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!