📅  最后修改于: 2023-12-03 15:04:15.847000             🧑  作者: Mango
在Python中,复制(或者说复制对象)是非常常见的操作。在本文中,我们将介绍如何使用Python中的不同方法来实现复制操作。
浅复制是指创建一个新对象,但是该对象只是原始对象的副本引用。也就是说,它将复制原始对象的值,但是对于对象中的嵌套对象,则不会创建副本,而是只是引用它们。浅复制可以通过Python内置的 copy()
方法来实现,也可以通过切片操作符 [:]
实现。
# 通过 copy() 方法来实现浅复制
original_list = [1,2,3,[4,5,6]]
new_list = original_list.copy()
print(original_list) #[1, 2, 3, [4, 5, 6]]
print(new_list) #[1, 2, 3, [4, 5, 6]]
original_list[3][2] = 7
print(original_list) #[1, 2, 3, [4, 5, 7]]
print(new_list) #[1, 2, 3, [4, 5, 7]]
# 通过切片操作符实现浅复制
original_list = [1,2,3,[4,5,6]]
new_list = original_list[:]
print(original_list) #[1, 2, 3, [4, 5, 6]]
print(new_list) #[1, 2, 3, [4, 5, 6]]
original_list[3][2] = 7
print(original_list) #[1, 2, 3, [4, 5, 7]]
print(new_list) #[1, 2, 3, [4, 5, 7]]
相比于浅复制,深复制创建一个新的对象,同时也会创建嵌套对象的副本。也就是说,它不仅复制原始对象中的值,也复制嵌套对象的值。深复制可以使用Python内置的 deepcopy()
方法来实现。
# 通过 deepcopy() 方法来实现深复制
import copy
original_list = [1,2,3,[4,5,6]]
new_list = copy.deepcopy(original_list)
print(original_list) #[1, 2, 3, [4, 5, 6]]
print(new_list) #[1, 2, 3, [4, 5, 6]]
original_list[3][2] = 7
print(original_list) #[1, 2, 3, [4, 5, 7]]
print(new_list) #[1, 2, 3, [4, 5, 6]]
在上面的例子中,我们使用了 copy
模块中的 deepcopy()
方法来实现深复制。我们创建了一个原始的列表,其中包含嵌套的列表 [4, 5, 6]
。我们使用 deepcopy()
方法来复制原始列表,然后修改原始列表中嵌套列表的值。从结果可以看出,原始列表被修改了,但是复制的新列表没有被修改。
在本文中,我们介绍了Python中的浅复制和深复制。浅复制只是复制了原始对象的副本引用,而深复制则会复制整个对象,包括嵌套对象。在实践中,我们需要根据具体情况来选择使用哪种复制方式。