Python进阶之深浅拷贝

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. 并行计算:在并行计算中,经常需要对任务数据进行拷贝,以防止不同任务之间的数据冲突。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值