news 2026/4/20 8:21:16

Python之深拷贝和浅拷贝

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python之深拷贝和浅拷贝

一、浅拷贝(Shallow Copy)

含义:

  • 创建一个新对象,但只复制最外层容器
  • 内部的元素(如子列表、字典等)仍然是引用原对象中的元素,并未真正复制。

实现方式:

  1. 切片操作(仅适用于 list、tuple 等序列)

    new_list=old_list[:]
  2. 使用list()dict()set()构造函数

    new_list=list(old_list)new_dict=dict(old_dict)
  3. 使用copy模块的copy()函数(通用)

    importcopy new_obj=copy.copy(old_obj)

示例:

importcopy original=[[1,2],[3,4]]shallow=copy.copy(original)# 或 original[:]shallow[0][0]='X'print(original)# 输出: [['X', 2], [3, 4]] ← 被修改了!print(shallow)# 输出: [['X', 2], [3, 4]]

修改嵌套列表会影响原对象,因为内部列表是共享的。


二、深拷贝(Deep Copy)

含义:

  • 递归地复制对象及其所有嵌套的子对象。
  • 新对象与原对象完全独立,互不影响。

实现方式:

  • 必须使用copy模块的deepcopy()函数
    importcopy new_obj=copy.deepcopy(old_obj)

示例:

importcopy original=[[1,2],[3,4]]deep=copy.deepcopy(original)deep[0][0]='X'print(original)# 输出: [[1, 2], [3, 4]] ← 未被修改print(deep)# 输出: [['X', 2], [3, 4]]

修改深拷贝后的对象不会影响原始对象。


三、何时用浅拷贝 vs 深拷贝?

场景推荐
对象是简单的一维列表/字典(不含嵌套可变对象)浅拷贝足够,效率高
对象包含嵌套的可变对象(如列表中含字典)且需要完全隔离必须用深拷贝
性能敏感且确定无嵌套引用优先用浅拷贝或切片

四、注意事项

  • 不可变对象(如 int, str, tuple):即使浅拷贝,修改“内部”也不可能(因为不可变),所以通常无需深拷贝。
  • 循环引用deepcopy能正确处理对象之间的循环引用,不会无限递归。
  • 性能deepcopycopy慢很多,尤其对大型嵌套结构。

总结

方法代码是否复制嵌套对象适用场景
浅拷贝copy.copy(x)x[:]❌ 否简单结构、性能优先
深拷贝copy.deepcopy(x)✅ 是嵌套结构、需完全独立

合理选择拷贝方式,既能避免意外副作用,又能保持程序效率。


自此,本文分享到此结束!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 14:08:15

用AI一键解析B站视频链接,自动生成下载工具

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个Python脚本,能够自动解析B站视频链接并下载高清视频。要求:1. 支持输入B站视频URL 2. 自动识别最高画质版本 3. 支持断点续传 4. 显示下载进度条 5…

作者头像 李华
网站建设 2026/4/16 13:06:54

MySQL 运维实战:常见问题排查与解决方案

MySQL 运维实战:常见问题排查与解决方案(2025-2026 生产版) 以下是 MySQL 8.0~8.4 版本在真实生产环境中出现频率最高、影响最大的 15 类问题,按照“出现概率 严重程度”排序,并给出目前最主流、最有效的排查思路与解…

作者头像 李华
网站建设 2026/4/16 12:22:35

NOT EXISTS在电商系统中的5个实际应用场景

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个电商数据查询演示工具,展示5个使用NOT EXISTS语句的实际场景,如识别未购买过特定商品的用户、查找没有评价的订单等。每个场景提供完整的SQL代码、…

作者头像 李华
网站建设 2026/4/16 15:42:45

HunyuanVideo-Foley书籍编写:《AI音效工程》章节大纲构想

HunyuanVideo-Foley书籍编写:《AI音效工程》章节大纲构想 1. 引言:AI音效生成的技术演进与HunyuanVideo-Foley的诞生 随着数字内容创作的爆发式增长,视频制作对高质量、高效率的音效匹配需求日益迫切。传统音效设计依赖人工逐帧标注与素材库…

作者头像 李华
网站建设 2026/4/18 20:09:30

HunyuanVideo-Foley创意玩法:用AI为老电影重制沉浸式音效

HunyuanVideo-Foley创意玩法:用AI为老电影重制沉浸式音效 1. 背景与技术价值 在影视制作中,音效(Foley)是提升观众沉浸感的关键环节。传统音效制作依赖专业录音师在后期逐帧匹配脚步声、关门声、环境噪音等细节,耗时耗…

作者头像 李华
网站建设 2026/4/16 12:22:34

5分钟搭建Docker镜像下载代理服务

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个简易Docker镜像代理服务,能够:1) 配置国内镜像源代理;2) 提供简单的Web管理界面;3) 记录下载日志;4) 支持多用户…

作者头像 李华