当前位置: 首页 > news >正文

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)✅ 是嵌套结构、需完全独立

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


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

http://www.jsqmd.com/news/238151/

相关文章:

  • 如何在48小时内完成一个高可用Python插件?低代码平台实战揭秘
  • 小白也能懂!手把手教你用Qwen2.5-0.5B实现代码生成
  • Transformer推理显存优化全解析,掌握这7种技术轻松部署百亿模型
  • AMD Ryzen调试终极指南:5个简单步骤释放处理器隐藏性能
  • 抖音视频批量下载终极指南:轻松打造个人专属素材库
  • Qwen2.5-0.5B-Instruct实测:JSON生成与表格理解能力展示
  • 亲测Qwen2.5-0.5B-Instruct:网页推理效果超预期,附完整体验报告
  • GLM-4.6V-Flash-WEB真实项目案例:智能文档识别系统搭建
  • 传统vs现代:三极管电路设计效率对比实验
  • AI如何解决Pinia状态管理中的常见错误
  • V2EX社区运营实战:如何利用AI提升用户活跃度
  • 智能打码系统实战案例:基于MediaPipe的隐私保护方案
  • 抖音视频批量下载工具深度评测:小白也能轻松掌握的高效方案
  • AI人脸隐私卫士技术解析:动态打码实现步骤详解
  • AI人脸隐私卫士实战:处理多人合照的完整流程
  • Vue路由小白必看:this.$router.push从入门到精通
  • Qwen3-4B功能测评:256K上下文+FP8量化的真实表现
  • Z-Image绘画低成本入门:云端GPU按小时付费,零风险
  • 动物骨骼检测奇技:用人体模型迁移学习
  • 用Mark Text快速构建文档原型的方法
  • Z-Image企业内训:人均1元成本的AI创作课
  • 人脸检测模型更新策略:保持高精度的维护方案
  • 3个真实案例告诉你:RPA与Python协同如何颠覆传统工作流
  • 为什么你的RPA项目失败了?90%的人忽略了Python的这4个用途
  • 5大实用技巧让魔兽争霸III重获新生:WarcraftHelper插件深度解析
  • 【自动化革命核心武器】:为什么顶尖公司都在用RPA结合Python?
  • 零基础入门:用THREEJS创建第一个3D场景
  • 5分钟原型开发:用NODEPAD验证下载创意
  • AI舞蹈评分系统搭建:骨骼检测+云端GPU,周末就能搞定原型
  • ComfyUI视频合并终极指南:7个核心技巧与实战解决方案