Python 赋值、浅拷贝和深度拷贝

本文介绍了Python中赋值、浅拷贝和深拷贝的概念,强调了深拷贝与浅拷贝的区别,特别是在处理复杂对象如包含列表的列表时的差异。通过实例演示了简单的对象和复杂对象在使用浅拷贝和深拷贝时的不同行为,解释了为何改变原对象会影响浅拷贝但不影响深拷贝的对象。
摘要由CSDN通过智能技术生成

前言:
在创建二维数组时,遇到了list * n—>n shallow copies of list concatenated, n个list的浅拷贝的连接的情况

赋值、浅拷贝和深度拷贝

  • 赋值:是对象的引用
  • 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象
  • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。
  • 拷贝即是开辟一块新的内存空间,把被拷贝对象中的值复制过去

注意:

  • 我们寻常意义的赋值就是深copy,即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。
  • 而浅拷贝并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。

  • 对于简单的 object,用 shallow copy(浅拷贝) 和 deep copy(深拷贝) 没区别
  • 对于复杂的 object, 如 list 中套着 list 的情况,shallow copy 中的 子list,并未从原 object 真的「独立」出来。也就是说,如果你改变原 object 的子 list 中的一个元素,你的 copy 就会跟着一起变。这跟我们直觉上对「复制」的理解不同。
  • ps:何为简单的 object、复杂的object,暂时未找到合适的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值