Python的浅层和深层复制

本文介绍了Python中的浅层复制和深层复制的概念,包括它们在处理复合对象时的区别。浅层复制通过构造新对象并插入原对象的引用实现,而深层复制则会递归复制对象的副本。深度复制可能遇到递归循环和过多复制的问题。文章通过list()、[:]、copy.copy()及copy.deepcopy()等方法展示了这两种复制方式的使用示例。
摘要由CSDN通过智能技术生成

1.官方文档定义:

Python的浅层 (shallow) 和深层 (deep) 复制

浅层复制和深层复制之间的区别仅与复合对象 (即包含其他对象的对象,如列表或类的实例) 相关:

  • 一个 浅层复制 会构造一个新的复合对象,然后(在可能的范围内)将原对象中找到的 引用 插入其中。

  • 一个 深层复制 会构造一个新的复合对象,然后递归地将原始对象中所找到的对象的 副本 插入。

深度复制操作通常存在两个问题, 而浅层复制操作并不存在这些问题:

  • 递归对象 (直接或间接包含对自身引用的复合对象) 可能会导致递归循环。

  • 由于深层复制会复制所有内容,因此可能会过多复制(例如本应该在副本之间共享的数据)

2.通过示例进行了解

可以使用构造方法 list()、 [:]、copy.copy()进行浅层复制操作

>>> xs = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> ys = list(xs)
>>> ys
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

>>> xs.append('new')
>>> xs
[[1, 2, 3], [4, 5, 6], [7, 8, 9], 'new']
>>> ys
[[1, 2, 3], [
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值