浅拷贝和深拷贝
深拷贝(Deep Copy)和浅拷贝(Shallow Copy)是在编程中用来复制数据结构的两个概念。它们在复制数据时的行为和效果有所不同:
浅拷贝(Shallow Copy):
浅拷贝创建了一个新的数据结构,该数据结构的内容与原始数据结构相同。然而,对于数据结构中包含的对象(如列表、字典、类实例等),浅拷贝只复制了对这些对象的引用,而不复制对象本身。这意味着原始数据结构和浅拷贝后的数据结构会共享相同的子对象。如果你修改了浅拷贝后的数据结构中的子对象,那么原始数据结构中的相应子对象也会受到影响。
在Python中,可以使用标准库模块中的copy
模块来执行浅拷贝,例如使用copy.copy()
函数。
深拷贝(Deep Copy):
深拷贝创建了一个新的数据结构,该数据结构的内容与原始数据结构相同,包括所有的子对象。换句话说,深拷贝会递归地复制原始数据结构中的所有对象,以便原始数据结构和深拷贝后的数据结构是完全独立的,互不影响。
在Python中,可以使用标准库模块中的copy
模块来执行深拷贝,例如使用copy.deepcopy()
函数。
以下是一个示例,演示了浅拷贝和深拷贝的区别:
import copy
# 原始数据结构
original_list = [1, [2, 3], [4, 5]]
# 浅拷贝
shallow_copy = copy.copy(original_list)
# 深拷贝
deep_copy = copy.deepcopy(original_list)
# 修改浅拷贝中的子对象
shallow_copy[1][0] = 999
# 修改深拷贝中的子对象
deep_copy[1][0] = 888
# 原始数据结构不受影响
print(original_list) # [1, [999, 3], [4, 5]]
在上述示例中,浅拷贝只复制了对原始数据结构中的子列表的引用,所以修改浅拷贝中的子列表也会影响原始数据结构。而深拷贝复制了整个子列表,因此修改深拷贝中的子列表不会影响原始数据结构。
标签:数据结构,对象,复制,拷贝,copy,原始数据 From: https://www.cnblogs.com/mio1221/p/17831675.html