图解Python中的浅拷贝和深拷贝

 更新时间:2023年11月29日 09:39:16   作者:时代&信念  
这篇文章主要介绍了图解Python中的浅拷贝和深拷贝,深拷贝,拷贝的程度深,自己新开辟了一块内存,将被拷贝内容全部拷贝过来了,浅拷贝,拷贝的程度浅,只拷贝原数据的首地址,然后通过原数据的首地址,去获取内容,需要的朋友可以参考下

Python浅拷贝和深拷贝

最直观的理解就是:

1.深拷贝,拷贝的程度深,自己新开辟了一块内存,将被拷贝内容全部拷贝过来了;

2.浅拷贝,拷贝的程度浅,只拷贝原数据的首地址,然后通过原数据的首地址,去获取内容。

两者的优缺点对比

(1)深拷贝拷贝程度高,将原数据复制到新的内存空间中。改变拷贝后的内容不影响原数据内容。但是深拷贝耗时长,且占用内存空间。

(2)浅拷贝拷贝程度低,只复制原数据的地址。其实是将副本的地址指向原数据地址。修改副本内容,是通过当前地址指向原数据地址,去修改。所以修改副本内容会影响到原数据内容。但是浅拷贝耗时短,占用内存空间少。

浅拷贝

有一层数据类型,且数据类型时可变数据类型,例如:列表、字典

在这里插入图片描述

有一层数据类型,且数据类型时不可变数据类型,例如:元组、字符串

在这里插入图片描述

有两层数据类型,外层为可变数据类型,内层为可变数据类型

在这里插入图片描述

有两层数据类型,外层为可变数据类型,内层为不可变数据类型

在这里插入图片描述

有两层数据类型,外层为不可变数据类型,内层为不可变数据类型

在这里插入图片描述

有两层数据类型,外层为不可变数据类型,内层为可变数据类型

在这里插入图片描述

深拷贝

有一层数据类型,且数据类型时可变数据类型,例如:列表、字典

在这里插入图片描述

有一层数据类型,且数据类型时不可变数据类型,例如:元组、字符串

在这里插入图片描述

有两层数据类型,外层为可变数据类型,内层为可变数据类型

在这里插入图片描述

有两层数据类型,外层为可变数据类型,内层为不可变数据类型

在这里插入图片描述

有两层数据类型,外层为不可变数据类型,内层为不可变数据类型

在这里插入图片描述

有两层数据类型,外层为不可变数据类型,内层为可变数据类型

在这里插入图片描述

由实验结果总结得:

当内层为可变数据类型时,深拷贝后内层外层地址均发生改变。当内层为不可变数据类型时,外层不管是可变还是不可变数据类型,使用深拷贝,都不会改变内层地址,只会在外层为可变数据类型时,改变外层地址。

使用浅拷贝是只能在外层数据类型为可变数据类型时,才能改变外层地址。而内层地址,无论是否为可变数据类型还是不可变数据类型,使用浅拷贝都不会改变内层数据类型地址。

到此这篇关于图解Python中的浅拷贝和深拷贝的文章就介绍到这了,更多相关Python浅拷贝和深拷贝内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python3操作YAML文件格式方法解析

    Python3操作YAML文件格式方法解析

    这篇文章主要介绍了Python3操作YAML文件格式方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • python文件和目录操作方法大全(含实例)

    python文件和目录操作方法大全(含实例)

    这篇文章主要介绍了python文件和目录的操作方法,简明总结了文件和目录操作中常用的模块、方法,并列举了一个综合实例,需要的朋友可以参考下
    2014-03-03
  • 解读Numpy中的排序(sort,argsort)

    解读Numpy中的排序(sort,argsort)

    这篇文章主要介绍了关于Numpy中的排序(sort,argsort),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Python使用MapReduce编程模型统计销量

    Python使用MapReduce编程模型统计销量

    MapReduce是面向大数据并行处理的计算模型、框架和平台,是一种计算引擎,可以把我们对大批量数据的计算通过抽象成map与reduce两个子任务进行计算从而更快的得到想要的结果
    2022-04-04
  • python实现微信每日一句自动发送给喜欢的人

    python实现微信每日一句自动发送给喜欢的人

    这篇文章主要为大家详细介绍了python实现微信每日一句自动发送给喜欢的人,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • Python3进制之间的转换代码实例

    Python3进制之间的转换代码实例

    这篇文章主要介绍了Python3进制之间的转换代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 基于Pandas读取csv文件Error的总结

    基于Pandas读取csv文件Error的总结

    今天小编就为大家分享一篇基于Pandas读取csv文件Error的总结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Django项目的初步创建与简单配置

    Django项目的初步创建与简单配置

    本文主要介绍了Django项目的初步创建与简单配置,详细介绍了如何安装和配置Django,包括创建项目、数据库配置、路由等,通过本文可以了解如何使用Django创建自己的Web应用程序
    2023-09-09
  • Python 字符串、列表、元组的截取与切片操作示例

    Python 字符串、列表、元组的截取与切片操作示例

    这篇文章主要介绍了Python 字符串、列表、元组的截取与切片操作,结合实例形式分析了Python针对字符串、列表、元组的截取与切片相关操作技巧,需要的朋友可以参考下
    2019-09-09
  • python TCP Socket的粘包和分包的处理详解

    python TCP Socket的粘包和分包的处理详解

    这篇文章主要介绍了python TCP Socket的粘包和分包的处理详解,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02

最新评论