📜  python deepcopy - Python (1)

📅  最后修改于: 2023-12-03 15:18:54.732000             🧑  作者: Mango

Python Deepcopy

在 Python 中,有时需要在不改变原始数据结构的情况下进行更改。这就是深度复制函数 deepcopy() 出现的原因。当您使用普通复制时,您只是创建了一个原始数据结构的副本,这意味着原始数据结构和副本具有相同的 ID,因此修改一个也会修改另一个。然而,集合中的元素可以与副本的元素不同。深度复制函数.deepcopy()避免了这样的情况,因为它不仅复制原始数据结构,而且复制它所包含的所有数据。在本文中,我们将学习如何使用 Python 中的深拷贝函数。

Python 中的深拷贝

在 Python 中,我们可以使用模块 copy 中的 deepcopy() 函数来实现深拷贝。可以按以下方式导入模块(如果没有导入):

import copy

然后,您可以创建一个数据结构并复制它,彼此不互相干扰。这是一个示例:

old_list = [[1,2,3],[4,5,6],[7,8,9]]
new_list = copy.deepcopy(old_list)

在上面的示例中,old_list 是原始数据结构,而 new_list 是其深拷贝。因此,它们的 ID 将不同:

print("Old list ID:",id(old_list))
print("New list ID:",id(new_list))

输出:

Old list ID: 140630894850688
New list ID: 140630895778688

在这里,old_listnew_list 在内存中地址不同。因此,它们是两个不同的数据结构。这意味着,如果我们更改其中一个,其他不会受影响:

old_list[1][1] = "AA"
print("Old list:",old_list)
print("New list:",new_list)

输出:

Old list: [[1, 2, 3], [4, 'AA', 6], [7, 8, 9]]
New list: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

在这个例子中,我们更改了 old_list 中一个元素 4,5,6 中的元素 5 为 “AA”。修改后,old_list 变为 [[1, 2, 3], [4, 'AA', 6], [7, 8, 9]],而 new_list 仍然是 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

总结

在 Python 中,我们可以使用 copy 模块的 deepcopy() 函数来完成深度复制。这意味着我们可以在副本中修改数据结构而不会影响原始数据结构。因此,deepcopy() 是在 Python 中非常有用的一个函数。