在 Python 中,使用=操作符来复制对象实际上是复制了对象的引用,而不是复制对象本身。这意味着修改一个变量会影响另一个变量。

例如:

a = [1, 2, 3]
b = a  # 将a赋值给b

b.append(4)  # 修改b

print(a)  # 输出 [1, 2, 3, 4]

为了创建对象的完全独立副本,可以使用copy模块中的copy()函数。这个函数可以复制可变对象(如列表、字典等)和不可变对象(如字符串、元组等)。

import copy

a = [1, 2, 3]
b = copy.copy(a)  # 创建a的拷贝

b.append(4)  # 修改b

print(a)  # 输出 [1, 2, 3]
print(b)  # 输出 [1, 2, 3, 4]

在上面的例子中,copy.copy()函数创建了列表a的一个副本,并将其赋值给了变量b。这样,修改b不会影响a

对于嵌套对象(如列表中嵌套列表),可以使用copy.deepcopy()函数来创建一个深度拷贝,以确保所有嵌套对象都被复制。

import copy

a = [[1, 2], [3, 4]]
b = copy.deepcopy(a)  # 创建a的深度拷贝

b[0].append(3)  # 修改b中的嵌套列表

print(a)  # 输出 [[1, 2], [3, 4]]
print(b)  # 输出 [[1, 2, 3], [3, 4]]

在上面的例子中,copy.deepcopy()函数创建了嵌套列表a的一个深度副本,并将其赋值给了变量b。这样,修改b中的嵌套列表不会影响a

Python 对象复制:浅拷贝 vs 深拷贝

原文地址: https://www.cveoy.top/t/topic/pkjx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录