问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

python的复制,深拷贝和浅拷贝的区别

提问网友 发布时间:2022-04-23 05:33
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
2个回答
懂视网 回答时间:2022-04-28 19:07
在Python中对象的赋值其实就是对象的引用。当创建一个对象,把它赋值给另一个变量的时候,python并没有拷贝这个对象,只是拷贝了这个对象的引用而已。

浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用的其他对象我不复制

深拷贝:外围和内部元素都进行了拷贝对象本身,而不是引用。也就是,把对象复制一遍,并且该对象中引用的其他对象我也复制。

深浅拷贝的作用

1,减少内存的使用
2,以后在做数据的清洗、修改或者入库的时候,对原数据进行复制一份,以防数据修改之后,找不到原数据。

热心网友 回答时间:2022-04-28 16:15
简单点说
1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
2. copy.deepcopy 深拷贝 拷贝对象及其子对象
用一个简单的例子说明如下:
>>>import copy
>>>a = [1, 2, 3, 4, ['a', 'b', 'c']]
>>> b = a
>>> c = copy.copy(a)
>>> d = copy.deepcopy(a)
很容易理解:a是一个列表,表内元素a[4]也是一个列表(也就是一个内部子对象);b是对a列表的又一个引用,所以a、b是完全相同的,可以通过id(a)==id(b)证明。
第4行是浅拷贝,第五行是深拷贝,通过id(c)和id(d)可以发现他们不相同,且与id(a)都不相同:
>>> id(a)
19276104
>>> id(b)
19276104
>>> id(c)
19113304
>>> id(d)
19286976
至于如何看深/浅拷贝的区别,可以通过下面的操作来展现:
>>> a.append(5) #操作1
>>> a[4].append('hello') #操作2
这时再查看结果:
>>> a
[1, 2, 0, 4, ['a', 'b', 'c', 'hello'], 5]
>>> b
[1, 2, 0, 4, ['a', 'b', 'c', 'hello'], 5]
>>> c
[1, 2, 3, 4, ['a', 'b', 'c', 'hello']]
>>> d
[1, 2, 3, 4, ['a', 'b', 'c']]
可以发现a、b受了操作1、2的影响,c只受操作2影响,d不受影响。a、b结果相同很好理解。由于c是a的浅拷贝,只拷贝了父对象,因此a的子对象( ['a', 'b', 'c', 'hello'])改变时会影响到c;d是深拷贝,完全不受a的影响

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

相关推荐
  • python深浅拷贝区别

    python深浅拷贝区别

    python深浅拷贝区别:在Python中对象的赋值其实就是对象的引用。当创建一个对象,把它赋值给另一个变量的时候,python并没有拷贝这个对象,只是拷贝了这个对象的引用而已。浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对
    查看详情
  • 理解Python赋值与拷贝

    理解Python赋值与拷贝

    理解Python赋值与拷贝:本文实例讲述了理解Python赋值与拷贝。分享给大家供大家参考,具体如下:变量与赋值在 Python 中,一切皆为对象,对象通过「变量名」引用,「变量名」更确切的叫法是「名字」,好比我们每个人都有自己的名字一样,咱们通过名字来代指某个人,代码里面通过名字
    查看详情
  • Python赋值与拷贝

    Python赋值与拷贝

    Python赋值与拷贝:本文给大家分享一篇文章带领大家读懂python赋值与拷贝的知识,感兴趣的朋友一起看看吧变量与赋值在 Python 中,一切皆为对象,对象通过「变量名」引用,「变量名」更确切的叫法是「名字」,好比我们每个人都有自己的名字一样,咱们通过名字来代指某个人,代码
    查看详情
转:C#之深拷贝和浅拷贝的区别 深拷贝和浅拷贝怎样理解(通俗具体点儿) 淘宝上出售的那些OFFICE 2010 的注册码是怎么得到的?高分!!! 淘宝上买的office2016激活码安全么 淘宝office激活码后缀 淘宝有很多卖office 密匙的,直接可以联网激活,请问他们都是通过什么方式弄来的?知道内幕的说一 淘宝上几块钱的office激活密钥靠谱吗 在淘宝上买office365激活码安全吗 淘宝网上的office密钥能用的住吗 怎么激活office?产品密钥 怎样在淘宝上买Office 2016 激活码? 我在网上买的office2016的密钥怎么用不了??怎么回事 买电脑送的office密钥在哪 淘宝上卖office密钥的人从哪里来的密钥 淘宝上卖的office激活码可信吗 淘宝上几块钱的office激活密钥靠谱吗?? 电脑没有安装微软Office系列软件,只买了个密钥,怎么安装? 淘宝上的office激活码怎么用 淘宝上买的office密钥靠谱吗,会不会存在和365一样泄密的隐患? qq好友叫我发位置给他 我不想让他知道我在哪里 怎么才能修改位置 net中浅拷贝和深拷贝有什么区别,分别如何实现 Python中的赋值,浅拷贝和深拷贝的区别 C#对象的浅拷贝(浅表复制)和深拷贝(深度复制)是什么意思? 怎么跳过吃鸡人脸识别? 菜鸡软件如何跳过实名认证,直接玩游戏? 如何不让吃鸡写姓名和身份证才进入游戏? 吃鸡如何跳过游戏人脸验证环节? 吃鸡实名认证怎么解除未成年呢? 吃鸡可以不用实民认证 可以加速绝地求生国际服的加速器不用实名 apple watch可以脱离iPhone单独使用吗? 如果捡到一箱金条,怎么处理好 捡到金子回倒霉吗?怎么样化解啊? 黄金吊坠掉了两三个月又捡回来了好不好 捡到黄金是什么预兆? 我在山上捡到很多黄金银子该怎么办。会被关进大牢里面吗? 河里捡到的黄金怎么处理有相关的法律知识? 捡到黄金代表什么运势 捡到黄金首饰运气好不好? 突然捡到一斤黄金,咋处理!
Top