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

文章目录


   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]]

  在示例中:

  • 对于浅拷贝,修改原始列表的嵌套列表内容会影响到复制后的列表。
  • 对于深拷贝,即使修改原始列表的嵌套元素也不会影响到深拷贝后的列表。
  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值