0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

实例介绍Python中深浅拷贝

数据分析与开发 来源:数据分析与开发 作者:数据分析与开发 2020-12-16 11:34 次阅读

【导语】:在工作中,常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修改的问题。为了防止数据被修改,就需要在传递一个副本,即使副本被修改,也不会影响原数据的使用。为了生成这个副本,就产生了拷贝。今天就说一下Python中的深浅拷贝问题。

一、深浅copy

赋值运算

注意:l2 = l1是一个指向,是赋值,和深浅copy无关。

浅copy

其实列表是一个一个的槽位,每个槽位存储的是该对象的内存地址

#例1. 给大列表添加元素

例2

例3

小结:

浅copy:会在内存中新开辟一个空间,存放这个copy的列表,但是列表里面的内容还是沿用之前对象的内存地址。

深copy

但是python对深copy做了一个优化,将可变的数据类型在内存中重新创建一份,而不可变的数据类型则沿用之前的,所以内存中是下面这样的:

小结:

深copy:会在内存中开辟新空间,将原列表以及列表里面的可变数据类型重新创建一份,不可变数据类型则沿用之前的。

为什么Python默认的拷贝方式是浅拷贝?

时间角度:浅拷贝花费时间更少。

空间角度:浅拷贝花费内存更少。

效率角度:浅拷贝只拷贝顶层数据,一般情况下比深拷贝效率高。

总结:

不可变对象在赋值时会开辟新空间。

可变对象在赋值时,修改一个的值,另一个也会发生改变。

深、浅拷贝对不可变对象拷贝时,不开辟新空间,相当于赋值操作。

浅拷贝在拷贝时,只拷贝第一层中的引用,如果元素是可变对象,并且被修改,那么拷贝的对象也会发生变化。

深拷贝在拷贝时,会逐层进行拷贝,直到所有的引用都是不可变对象为止。

Python 有多种方式实现浅拷贝,copy模块的copy 函数 ,对象的 copy 函数 ,工厂方法,切片等。

大多数情况下,编写程序时,都是使用浅拷贝,除非有特定的需求。

浅拷贝的优点:拷贝速度快,占用空间少,拷贝效率高。

责任编辑:xj

原文标题:图解 Python 中深浅拷贝

文章出处:【微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7006

    浏览量

    88947
  • python
    +关注

    关注

    56

    文章

    4793

    浏览量

    84631
  • 编程拷贝
    +关注

    关注

    0

    文章

    2

    浏览量

    5531

原文标题:图解 Python 中深浅拷贝

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    M.2硬盘拷贝,该怎么选择适合的工具?FPGA拷贝机到底有没有用?

    探索SP-B1011 M.2 FPGA硬盘拷贝机,一款支持NVMe和SATA接口的高效数据管理工具。无需计算机,即插即用,提供快速拷贝、全盘拷贝和安全抹除模式。适用于个人和专业IT人士,满足各种数据备份和恢复需求。
    的头像 发表于 12-12 11:02 130次阅读
    M.2硬盘<b class='flag-5'>拷贝</b>,该怎么选择适合的工具?FPGA<b class='flag-5'>拷贝</b>机到底有没有用?

    批量音频档案拷贝最佳方案:解决播放错误与拷贝不完全问题

    本文讨论了在数字化时代,专业SD拷贝机在批量拷贝音频档案至MicroSD卡的应用优势。相较于传统计算机拷贝,SD拷贝机能够完整复制包括隐藏
    的头像 发表于 11-23 16:12 147次阅读
    批量音频档案<b class='flag-5'>拷贝</b>最佳方案:解决播放错误与<b class='flag-5'>拷贝</b>不完全问题

    Python多线程和多进程的区别

    Python作为一种高级编程语言,提供了多种并发编程的方式,其中多线程与多进程是最常见的两种方式之一。在本文中,我们将探讨Python多线程与多进程的概念、区别以及如何使用线程池与进程池来提高并发执行效率。
    的头像 发表于 10-23 11:48 394次阅读
    <b class='flag-5'>Python</b><b class='flag-5'>中</b>多线程和多进程的区别

    磁盘拷贝机会拷贝删除的内容吗

    磁盘拷贝机,也称为硬盘克隆器或磁盘复制器,是一种用于复制硬盘驱动器内容的设备。它可以将一个硬盘上的所有数据,包括操作系统、程序、文件和设置,复制到另一个硬盘上。这种设备在数据备份、系统迁移、硬盘
    的头像 发表于 10-14 15:38 431次阅读

    pytorch和python的关系是什么

    ,PyTorch已经成为了一个非常受欢迎的框架。本文将介绍PyTorch和Python之间的关系,以及它们在深度学习领域的应用。 Python简介 Python是一种高级、解释型、通用
    的头像 发表于 08-01 15:27 1900次阅读

    怎么导出python边缘计算的APP?

    怎么导出python边缘计算的APP,想进行修改又找不到源码
    发表于 07-25 06:13

    Python建模算法与应用

    上成为理想的脚本语言,特别适用于快速的应用程序开发。本文将详细介绍Python在建模算法的应用,包括常见的建模算法、Python在建模
    的头像 发表于 07-24 10:41 528次阅读

    Python在AI的应用实例

    Python在人工智能(AI)领域的应用极为广泛且深入,从基础的数据处理、模型训练到高级的应用部署,Python都扮演着至关重要的角色。以下将详细探讨Python在AI的几个关键应用
    的头像 发表于 07-19 17:16 1061次阅读

    Python的人工智能框架与实例

    在人工智能(AI)领域,Python因其简洁的语法、丰富的库和强大的社区支持,成为了最受欢迎的编程语言之一。本文将详细介绍Python的人工智能框架,并通过具体
    的头像 发表于 07-15 14:54 1718次阅读

    使用Python进行自然语言处理

    在探讨使用Python进行自然语言处理(NLP)的广阔领域时,我们首先需要理解NLP的基本概念、其重要性、Python在NLP的优势,以及如何通过Python实现一些基础的NLP任务
    的头像 发表于 07-04 14:40 441次阅读

    esp32c3怎样保护flash的代码不被拷贝

    想知道这个c3怎样保护flash的代码不被拷贝。这个内置flash的代码有没有可能被拷贝出来,如果可以拷贝,应该怎样保护。 另一个问题
    发表于 06-19 06:32

    基于Python的地图绘制教程

    本文将介绍通过Python绘制地形图的方法,所需第三方Python相关模块包括 rasterio、geopandas、cartopy 等,可通过 pip 等方式安装。
    的头像 发表于 02-26 09:53 1199次阅读
    基于<b class='flag-5'>Python</b>的地图绘制教程

    如何使用linux下gdb来调试python程序

    如何使用linux下gdb来调试python程序  在Linux下,可以使用GDB(GNU调试器)来调试Python程序。GDB是一个强大的调试工具,可以帮助开发者诊断和修复程序的错误。在本文
    的头像 发表于 01-31 10:41 2595次阅读

    Python智能家居系统代码介绍

    Python智能家居系统是一种基于Python编程语言开发的智能家居控制系统,在现代家庭得到了越来越广泛的应用。本文将详细介绍Python
    的头像 发表于 01-25 09:46 1352次阅读

    split在python的用法

    split在python的用法 split()是Python中一个非常常用的字符串函数,它能够根据指定的分隔符将一个字符串分割成多个子字符串,并返回一个包含这些子字符串的列表。本文将详细介绍
    的头像 发表于 12-25 15:12 2019次阅读