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

Python浅拷贝、深拷贝

浅拷贝和深拷贝是处理复杂数据结构(如列表、字典、对象等)时的两种复制方式,核心区别在于是否复制嵌套的数据结构:
 

1. 浅拷贝(Shallow Copy)

只复制最外层的数据,而嵌套的子对象(如列表中的列表、字典中的列表等)不会被复制,而是共享同一份内存地址。
 
举例:
L = [1, 2, [3, 4]]
a = L.copy()  # 浅拷贝

a[0] = 100    # 修改外层元素,不影响原列表
a[2][0] = 300 # 修改嵌套列表的元素,会影响原列表print(L)  # 输出 [1, 2, [300, 4]]

2. 深拷贝(Deep Copy)

完全复制所有层级的数据,包括嵌套的子对象,原对象和副本完全独立,修改任何一方都不会影响另一方。
 
举例:
import copy  # 需要导入copy模块

L = [1, 2, [3, 4]]
b = copy.deepcopy(L)  # 深拷贝

b[0] = 100    # 修改外层元素,不影响原列表
b[2][0] = 300 # 修改嵌套列表的元素,也不影响原列表print(L)  # 输出 [1, 2, [3, 4]] 

总结:

  • 如果数据结构是单层(如简单列表、字典),浅拷贝和深拷贝效果一样。
  • 如果数据结构有嵌套(如列表里包含列表),浅拷贝会共享嵌套部分,深拷贝则完全独立。
 
需要深拷贝时,要使用 copy 模块的 deepcopy() 方法。
http://www.hskmm.com/?act=detail&tid=21714

相关文章:

  • 破解 Pycharm
  • 阿里业务身份建模
  • 实用指南:矩阵结构体 图片绘制 超级玛丽demo6
  • 5分钟理清:Session、JWT、Token、SSO、OAuth 2.0 认证逻辑
  • 2025年10.1~10.6日信息竞赛计划安排表
  • 【Rust GUI开发入门】编写一个本地音乐播放器(10. 拼装UI组件) - Jordan
  • 国产数据库-达梦docker镜像安装
  • CAP 8.4 版本发布通告
  • 【Leetcode】随笔 - 详解
  • DevEco Studio 编辑器的使用 - 实践
  • docker安装MySQL8.0.25的坑
  • WPF 深入系列.2.布局系统.尺寸属性 - 指南
  • 实训
  • Kosaraju算法
  • bat批处理设置临时PATH路径不能访问
  • 10. Spring AI + RAG - Rainbow
  • 《AI智能体实战研发教程(从0到企业级项目落地)》全网上线|CSDN B站同步首发
  • 9. Spring AI 当中对应 MCP 的操作 - Rainbow
  • 9/30
  • rhel8无法输入中文问题(红帽8安装中文输入法)
  • 威佐夫博弈(Wythoff‘s Game)
  • C语言⽂件管理讲解(1)
  • 2025年9月30日
  • Min-p采样:通过动态调整截断阈值让大模型文本生成兼顾创造力与逻辑性
  • 2025 年快速卷帘门品牌最新推荐排行榜:聚焦智能定制与高效供货,精选快速卷帘门实力厂家
  • ARL灯塔搭建
  • 记 Charles 抓不到包 - Higurashi
  • STM32H743-ARM例程13-SDIO - 实践
  • 贼猴 0930 模拟赛 T2 | 计数
  • 题解:AT_abc311_h [ABC311Ex] Many Illumination Plans