Python:copy()和deepcopy()的区别和使用方法

发布时间:2024年01月07日

??copy() 和 deepcopy() 都是 Python 中用于复制对象的方法,但它们在复制过程中的行为不同。

copy()

??copy() 是浅拷贝,它创建一个新的对象,但是只复制了对象本身及其顶层元素的引用,而不是元素的内容

  • 对于可变对象(如列表、字典等),copy()创建一个新对象,但它们内部的元素是原对象和副本共享的。因此,对其中一个对象进行修改会影响到另一个对象。
  • 对于不可变对象(如整数、字符串等),copy() 创建的副本与原对象相同,因为不可变对象无法被修改。

deepcopy()

??deepcopy() 是深拷贝,它创建一个全新的对象,递归地复制原始对象及其所有嵌套的对象。这意味着它会复制对象本身以及对象中的所有元素,包括嵌套的列表、字典等

??不论对象的层级有多深,deepcopy() 都会创建一个完全独立的副本,即使对其中一个对象进行修改也不会影响到另一个对象。

使用方法示例:

import copy

# 浅拷贝示例
original_list = [1, 2, [3, 4]]
copied_list = copy.copy(original_list)

original_list[2][0] = 'changed'
print(original_list)  # 输出: [1, 2, ['changed', 4]]
print(copied_list)    # 输出: [1, 2, ['changed', 4]]

# 深拷贝示例
original_list = [1, 2, [3, 4]]
deep_copied_list = copy.deepcopy(original_list)

original_list[2][0] = 'changed'
print(original_list)     # 输出: [1, 2, ['changed', 4]]
print(deep_copied_list)  # 输出: [1, 2, [3, 4]]

??在示例中:

  • 对于浅拷贝,修改原始列表的嵌套列表内容会影响到复制后的列表。
  • 对于深拷贝,即使修改原始列表的嵌套元素也不会影响到深拷贝后的列表。
文章来源:https://blog.csdn.net/weixin_42046845/article/details/135441489
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。