概述

今天主要来看看Python中的浅拷贝和深拷贝内容,这里用一个实例来说明~


需求:

将一个列表的数据复制到另一个列表中。


思路:

使用列表[:],拿不准可以调用copy模块。


实现方法:

#!/usr/bin/python#将一个列表的数据复制到另一个列表中import copya=[1,2,3,4,['a','b']]b=a    #赋值c=a[:]              #浅拷贝d=copy.copy(a)      #浅拷贝e=copy.deepcopy(a)  #深拷贝#输出print('================a改变前================')print('a=',a)print('b=',b)print('c=',c)print('d=',d)print('e=',e)a.append(5)a[4].append('c')#输出print('================a改变后================')print('a=',a)print('b=',b)print('c=',c)print('d=',d)print('e=',e)

输出:


python的复制,深拷贝和浅拷贝的区别

一般有三种方法,

alist=[1,2,3,["a","b"]]

1、直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变

2、copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变

在浅拷贝时,拷贝出来的新对象的地址和原对象是不一样的,但是新对象里面的可变元素(如列表)的地址和原对象里的可变元素的地址是相同的,也就是说浅拷贝它拷贝的是浅层次的数据结构(不可变元素),对象里的可变元素作为深层次的数据结构并没有被拷贝到新地址里面去,而是和原对象里的可变元素指向同一个地址,所以在新对象或原对象里对这个可变元素做修改时,两个对象是同时改变的.

浅拷贝,原对象的list元素改变的话会改变当前对象,如果当前对象中list元素改变了,也同样会影响原对象。


3、深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变

深拷贝就是完全跟以前就没有任何关系了,原来的对象怎么改都不会影响当前对象


觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

python 深拷贝_详解python的复制,深拷贝和浅拷贝的区别相关推荐

  1. python 标准输出_详解Python的标准输入输出

    本篇文章给大家分享的是详解Python的标准输入输出,内容挺不错的,希望可以帮助到有需要的朋友 一.标准输入输出 1.打印到屏幕 产生输出的最简单方法是使用print语句,可以通过用逗号分隔零个或多个 ...

  2. processing python模式_详解python之多进程和进程池(Processing库)

    环境:win7+python2.7 一直想学习多进程或多线程,但之前只是单纯看一点基础知识还有简单的介绍,无法理解怎么去应用,直到前段时间看了github的一个爬虫项目涉及到多进程,多线程相关内容,一 ...

  3. python中有那几种赋值_详解Python列表赋值复制深拷贝及5种浅拷贝

    概述 在列表复制这个问题,看似简单的复制却有着许多的学问,尤其是对新手来说,理所当然的事情却并不如意,比如列表的赋值.复制.浅拷贝.深拷贝等绕口的名词到底有什么区别和作用呢? 列表赋值 # 定义一个新 ...

  4. python列表拆包_详解python 拆包可迭代数据如tuple, list

    详解python 拆包可迭代数据如tuple, list 拆包是指将一个结构中的数据拆分为多个单独变量中. 以元组为例: >>> a = ('windows', 10, 25.1, ...

  5. python归一化处理_详解python实现数据归一化处理的方式:(0,1)标准化

    在机器学习过程中,对数据的处理过程中,常常需要对数据进行归一化处理,下面介绍(0, 1)标准化的方式,简单的说,其功能就是将预处理的数据的数值范围按一定关系"压缩"到(0,1)的范 ...

  6. python变量定义大全_详解python变量与数据类型

    这篇文章我们学习 Python 变量与数据类型 变量 变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念,变量可以通过变量名访问.在 Python 中 变量命名规定,必须是大小写英文,数字 ...

  7. python从random生成列表_详解Python利用random生成一个列表内的随机数

    详解Python利用random生成一个列表内的随机数 首先,需要导入random模块: import random 随机取1-33之间的1个随机数,可能重复: random.choice(range ...

  8. python 线程安全的数据类型_详解python多线程、锁、event事件机制的简单使用

    详解python多线程.锁.event事件机制的简单使用 发布时间:2020-09-25 02:04:12 来源:脚本之家 阅读:117 作者:君惜 线程和进程 1.线程共享创建它的进程的地址空间,进 ...

  9. python中heapq的库是什么_详解Python中heapq模块的用法

    详解Python中heapq模块的用法 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  详解Python中heapq模块的用法.txt ] (友情提示:右键点上行t ...

最新文章

  1. 5-510寝室课后习题4.35
  2. 5-1rquests模拟登陆知乎之httpcode
  3. USTC English Club Note20171020(3)
  4. 中国大学单身 (民间)排行榜!你上榜了没
  5. Hello Blazor:(14)CSS隔离
  6. 当面试官问你了不了解defineProperty的时候。。。
  7. 云上“超算中心” 阿里云推出弹性高性能计算平台E-HPC
  8. Linux中的/ dev / null
  9. C++ 4 C++变量及作用域
  10. [转]给新同学的礼仪建议
  11. 媒体无效或 0 磁道损坏 - 磁盘无法使用。 格式化失败。
  12. java 步长_java设定窗口步长,依次统计窗口内数值总和
  13. vba 添加outlook 签名_如何在Outlook中使用宏发送邮件,并且使用已有签名?
  14. poi设置excel行高
  15. Linux命令——ln命令
  16. 判断A图层完全包含B图层的要素--(1)空间查询之esriSpatialRelEnum.esriSpatialRelContains(包含)
  17. java分布式任务调度 唯品会,分布式定时任务调度系统Saturn安装部署
  18. 越狱检测/越狱检测绕过
  19. 小型linux中文版,4MLinux 30.0 发布,小型Linux发行版
  20. 【预告】接前两天发的评审、表决系统,新的表决需求调研V2.0

热门文章

  1. 通过过滤器防止用户通过url访问不在权限内的菜单
  2. 牛客题霸 NC2 重排链表
  3. 二分法求解方程的根java_C语言二分法求解方程根的两种方法
  4. fir滤波器应用matlab,fir滤波器应用.ppt
  5. http发送16进制报文_阿里云物联网平台使用心得(25)MQTT协议详解UNSUBSCRIBE报文...
  6. 【学习笔记】JDBC:java提供的专门操纵数据库的API JDBC驱动程序的类型 JDBC常用的类与接口
  7. Java阻塞队列 LinkedBlockingDeque
  8. Java中 synchronized 关键字的理解
  9. AQS理解之三,由刚才写的锁转变成一个公平锁
  10. CTF——Web——MD5漏洞