python中的copy()与deepcopy()

在牛客做题的时候发现对于python中的复制还是没有掌握,于是梳理整理一番
我们平时生活中讲到的复制是创建一个新的独立于原文件的副本,对于原文件的修改影响不到副本的内容,对副本进行修改也影响不到原文件,这在python中体现为deep copy,但是在python中不仅存在着deep copy,还存在着shallow copy,先看官方文档的介绍。
copy — Shallow and deep copy operations
The difference between shallow and deep copying is only relevant for compound objects (objects that contain other objects, like lists or class instances):

A shallow copy constructs a new compound object and then (to the extent possible) inserts references into it to the objects found in the original. (same as [:])
A deep copy constructs a new compound object and then, recursively, inserts copies into it of the objects found in the original.
根据官方文档可以看出deep copy 与shallow copy的区别在于对于复杂对象的引用,
一个浅拷贝构造一个新的复合对象,然后(尽可能地)将引用插入到原来的对象中,
深度复制构造了一个新的复合对象,然后递归地将副本插入到原来的对象中。
即,shallow copy只是复制了最外层,对于对象内部的嵌套子对象,他不去复制,而deep copy 不止复制了表面,还递归地复制原对象内部的各种子对象。
总的来说,区别在于对于原对象内部子对象的复制会产生区别,而表层则不会,如代码

import copy
origin = [1,2,3,[4,5]]
copy1 = copy.copy(origin)
copy2 = copy.deepcopy(origin)
copy1
[1, 2, 3, [4, 5]]
copy2
[1, 2, 3, [4, 5]]
origin[2] = ‘change’ #此处在原对象的表层进行操作,无差别
copy1
[1, 2, 3, [4, 5]]
copy2
[1, 2, 3, [4, 5]]
origin[3][1] = ‘change’ #此处在原对象的子对象出进行操作,差别开始体现
copy1
[1, 2, 3, [4, ‘change’]]
copy2
[1, 2, 3, [4, 5]]

再深入就涉及到了python的赋值操作,在python中赋值跟其他语言不太一样,对一个变量进行赋值就是对值进行贴标签
下回分析。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值