在Python中,拷贝(copy)分为浅拷贝和深拷贝两种。
浅拷贝:创建一个新的对象,但仅仅复制原对象的引用,不复制内部的子对象。这意味着如果原对象中的某个元素是一个复合对象(如列表、字典等),那么拷贝后的对象与原对象会共享这个复合对象。在Python中,可以使用
copy
模块的copy()
函数实现浅拷贝。深拷贝:创建一个新的对象,并递归地复制原对象的所有元素(包括复合对象)。这意味着拷贝后的对象与原对象是完全独立的,修改其中一个对象不会影响另一个对象。在Python中,可以使用
copy
模块的deepcopy()
函数实现深拷贝。
在Python中,copy模块提供了两种拷贝方式:浅拷贝和深拷贝。
浅拷贝:创建一个新的对象,但只复制原对象的引用,不复制内部的子对象。这意味着如果原对象包含对其他对象的引用,则拷贝的对象和原对象会共享这些子对象。你可以使用
copy.copy()
函数进行浅拷贝。深拷贝:创建一个新的复合对象,并递归地复制原对象所包含的所有对象。这意味着新对象和原对象没有任何共享的子对象。你可以使用
copy.deepcopy()
函数进行深拷贝。
以下是如何使用这两个函数的例子:
import copy
# 原始列表
original_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 浅拷贝
shallow_copied_list = copy.copy(original_list)
# 深拷贝
deep_copied_list = copy.deepcopy(original_list)
在这个例子中,如果你修改original_list
中的一个嵌套列表,比如original_list[0][0] = 0
,那么shallow_copied_list[0][0]
也会变为0,因为它们共享同一个嵌套列表。但是deep_copied_list[0][0]
仍然是1,因为它有自己的嵌套列表拷贝。