Python进阶之深浅拷贝

本文详细解释了Python中的浅拷贝和深拷贝概念,指出浅拷贝对不可变和可变数据的行为差异,以及深拷贝在数据处理、算法实现和并行计算中的作用。
摘要由CSDN通过智能技术生成

image.png

**

一、浅拷贝

image.png

可变数据类型不可变数据类型
列表整型
字典字符串
集合元组
布尔类型

variant_demo1 = [1,2,3]
# 对variant_demo1进行拷贝
variant_demo2 = variant_demo1.copy()
# 对可变数据[]第一个元素进行修改
variant_demo1[0] = 4
print(variant_demo2) # [1, 2, 3]
print(variant_demo1) # [4, 2, 3]

image.png

image.png

针对可变数据类型的拷贝,当修改了被拷贝对象的第一层,拷贝的不会受到影响。

variant_demo1 = [1,2,3,[1,2]]
# 对variant_demo1进行拷贝
variant_demo2 = variant_demo1.copy()
# 对可变数据二层进行修改
variant_demo1[3][0] = 4
print(variant_demo2) # [1, 2, 3, [4, 2]]
print(variant_demo1) # [1, 2, 3, [4, 2]]
 

针对于可变数据类型的浅拷贝,当修改了被拷贝对象的第二层,拷贝的对象会受到影响。

image.png

image.png

二、深拷贝

image.png

import copy
mutable_copy_demo1 = [1,2,3,[1,2]]
# 深拷贝对象mutable_copy_demo1
mutable_copy_demo2 = copy.deepcopy(mutable_copy_demo1)
# 对拷贝二层修改
mutable_copy_demo1[3][1] = 4
print(mutable_copy_demo2) # [1, 2, 3, [1, 2]]
print(mutable_copy_demo1) # [1, 2, 3, [1, 4]]

image.png

image.png

三、小结

image.png

问:谈谈你对Python的深浅拷贝的理解。

浅拷贝:针对不可变数据类型的拷贝,被拷贝对象的修改不影响拷贝的结果。 针对可变数据类型,如果修改被拷贝对象的第一层,不会受到影响;如果拷贝到第二层,被拷贝对象的修改影响拷贝的结果。

深拷贝:构造一个新的复合对象,不会受到原拷贝对象的影响。

深浅拷贝的应用:

  1. 数据处理:在处理大量数据时,需要对数据进行拷贝,以免在修改数据时对原始数据造成影响。

  2. 算法实现:在实现一些算法,比如树形结构、图等时,需要深拷贝对象来保证算法的正确性。

  3. 并行计算:在并行计算中,经常需要对任务数据进行拷贝,以防止不同任务之间的数据冲突。

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值