0


Python中的深拷贝与浅拷贝有什么区别?

在Python中,深拷贝和浅拷贝是处理复合对象(例如列表、字典等含有其他对象的对象)时常用到的两种方法。它们之间的主要区别在于复制过程中对内嵌对象的处理方式。

浅拷贝 (Shallow Copy)

浅拷贝创建了一个新对象,其内容是对原始对象中内容的引用。这意呀着,如果原始对象中的元素是可变的,那么在新对象或原始对象中对这些元素的修改将影响到另一个对象。浅拷贝只复制了容器本身,而没有复制容器中的元素。

在Python中,可以使用copy()方法或copy模块的copy()函数来创建一个对象的浅拷贝。


import copy

original_list = [1, 2, [3, 4]]

shallow_copied_list = copy.copy(original_list)

# 修改原始列表中的子列表

original_list[2].append(5)

print(shallow_copied_list)  # 输出: [1, 2, [3, 4, 5]],显示子列表也被修改了

深拷贝 (Deep Copy)

深拷贝创建了一个新对象,同时递归地复制了原始对象中的所有元素和内嵌对象。这意味着,新对象和原始对象完全独立,对一个对象的修改不会影响到另一个对象。深拷贝会复制容器中的所有元素,以及这些元素包含的所有元素,依此类推。

在Python中,可以使用copy模块的deepcopy()函数来创建一个对象的深拷贝。


import copy

original_list = [1, 2, [3, 4]]

deep_copied_list = copy.deepcopy(original_list)

# 修改原始列表中的子列表

original_list[2].append(5)

print(deep_copied_list)  # 输出: [1, 2, [3, 4]],显示子列表没有被修改

总结

  • 浅拷贝创建了一个新对象,但不会递归地复制内嵌对象,因此原始对象和复制的对象会共享内部的可变元素。

  • 深拷贝创建了一个完全独立的新对象,包括所有的内嵌对象,因此原始对象和复制的对象不会共享任何元素,无论是外层还是内层。

选择使用浅拷贝还是深拷贝取决于你的具体需求,特别是你是否需要原始对象和复制对象之间完全独立。

标签: python

本文转载自: https://blog.csdn.net/2301_79507619/article/details/136785732
版权归原作者 dreammaker阿甘 所有, 如有侵权,请联系我们删除。

“Python中的深拷贝与浅拷贝有什么区别?”的评论:

还没有评论