Python 对象复制:浅拷贝 vs 深拷贝
在 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。
原文地址: https://www.cveoy.top/t/topic/pkjx 著作权归作者所有。请勿转载和采集!