>>> import copy
>>> a = [0,1,2,[3,4]]
>>> b = a  # 赋值
>>> c = a[:]  #浅拷贝(又叫影子拷贝)
>>> d = copy.copy(a)  #浅拷贝
>>> e = a.copy()  #浅拷贝
>>> f = copy.deepcopy(a)  # 深拷贝

#父对象的修改

>>> a.append(10)
>>>a
[0, 1, 2, [3, 4], 10]
>>> b
[0, 1, 2, [3, 4], 10]
>>> c
[0, 1, 2, [3, 4]]
>>> d
[0, 1, 2, [3, 4]]
>>> e
[0, 1, 2, [3, 4]]
>>> f
[0, 1, 2, [3, 4]]

#子对象的修改

>>> a[3].append(5)
>>>a
[0, 1, 2, [3, 4, 5], 10]
>>> b
[0, 1, 2, [3, 4, 5], 10]
>>> c
[0, 1, 2, [3, 4, 5]]
>>> d
[0, 1, 2, [3, 4, 5]]
>>> e
[0, 1, 2, [3, 4, 5]]
>>> f
[0, 1, 2, [3, 4]]

由上面两个例子可以理解为并总结出:

a = b赋值操作:就是将变量a的引用地址拷贝过去,即a的另一个别名;对a或者b的操作是对同一个地址下的元素进行操作,所以返回的结果都是一样的,数值同步

f = copy.deepcopy()深拷贝:就是将父对象及父对象下的子对象的所有元素值都拷贝过去,对a或者对f的操作都是各自对不同地址下的元素进行操作,互不影响

c = a[:],a.copy(),copy.copy(a)都是浅拷贝的形式:将变量a内的所有父对象的值拷贝过去,但是对于父对象内的子对象值(例如列表内的各个元素值)没有进行拷贝,只是拷贝了列表所指向的地址值。

所以介于赋值操作和深拷贝之间:对于a或者c的父对象的操作,a和c是同深拷贝一样互不影响的;对于子对象的操作,a和c是同赋值操作一样,数值同步的。

转载于:https://www.cnblogs.com/hongdanni/p/10458796.html

python浅拷贝和深拷贝相关推荐

  1. Python 浅拷贝和深拷贝 - Python零基础入门教程

    目录 一.Python 浅拷贝和深拷贝前言 二.Python 普通的变量赋值 三.Python 浅拷贝和深拷贝 1.Python 浅拷贝 copy 2.Python 深拷贝 deepcopy 3.Py ...

  2. Python浅拷贝与深拷贝

    Python浅拷贝与深拷贝 Python中拷贝 Python中的赋值号=并不是真正的拷贝,这仅仅是一个引用.参照这篇博客 .必要的时候,我们需要复制值,而不是使用引用.Python中有两种方式:浅拷贝 ...

  3. python函数方法里面用浅复制深复制_图解 Python 浅拷贝与深拷贝

    Python 中的赋值语句不会创建对象的拷贝,仅仅只是将名称绑定至一个对象.对于不可变对象,通常没什么差别,但是处理可变对象或可变对象的集合时,你可能需要创建这些对象的 "真实拷贝" ...

  4. python——浅拷贝和深拷贝

    这一篇的内容主要是关于python中浅拷贝和深拷贝的原理.博主的其他内容可以在其他专栏中查看,更多内容还在更新中. 变量赋值的底层逻辑 变量赋值机制 num1 = [1,2,3] num2 = num ...

  5. Python浅拷贝、深拷贝与防止数据被篡改

    目录 一.概念解读 1.1.Python对象 1.2.可变与不可变对象 1.3.引用 二.逐步深入:引用赋值 2.1.不可变对象的引用赋值 三.主旨详解:浅拷贝.深拷贝 3.1.浅拷贝 3.1.1.不 ...

  6. 二、Python浅拷贝和深拷贝

    1.深拷贝和浅拷贝 1.1.基本概念 ​ 浅拷贝(shallow copy ):拷贝父对象,不会拷贝对象的内部子对象 ​ A shallow copy creates a new object whi ...

  7. python怎么避免浅拷贝_详谈Python中的深拷贝和浅拷贝

    在平时工作中,经常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修改的问题.为了防止数据被修改,就需要在传递一个副本,即使副本被修改,也不会影响原数据的使用.为了生成这个副本,就产生了拷贝. ...

  8. python中的引用、浅拷贝和深拷贝

    在python中,有一句话:"一切皆为对象,一切皆为对象的引用",所以 只要记住这句话就很容易清楚python中的引用.浅拷贝和深拷贝了. 1. 引用 python中的引用是经常使 ...

  9. Python赋值、浅拷贝、深拷贝

    一.赋值(assignment) >>> a = [1, 2, 3] >>> b = a >>> print(id(a), id(b), sep= ...

最新文章

  1. 试用过期_过期的护肤品彩妆你都是怎么处理的呢?这样做,可以省一大笔钱
  2. rails3和4获取当前url
  3. JS中双引号单引号,转义字符问题!!
  4. 远程控制利器TeamViewer使用教程(图)
  5. python 对象转dict_如何将python dict对象转换为java等效对象?
  6. 软件分析与设计:分析什么?如何设计?
  7. 二次扩增产物条带弥散_PCR实验操作常见解决方法
  8. Python找出列表的中只出现一次的元素
  9. fiddler如何伪造referrer_Fiddler抓包神器带你遨游网络,叱咤风云,为所欲为
  10. 如何划分和细化有限元网格,才能提高计算的精度和速度?
  11. Leetcode练习 快慢指针
  12. 元宵大师的Python股票量化分析工具QTYX-版本更新说明
  13. Win10 安装虚拟机ROS
  14. 在数据库应用系统中数据库的开发
  15. Django项目 no signature found for builtin错误原因
  16. 狗汪汪玩转嵌入式 -- WINKHUB 边信道攻击 (NAND Glitch)
  17. 子曾经曰过,当心累了的时候,身体也会垮台。
  18. 黑客会用什么方式攻击你的服务器?
  19. excel 闪退应急打开文件的方法
  20. 怎么卸载mac上的软件

热门文章

  1. 北漂周记--第8记--项目测试
  2. java comparable Comparator 区别
  3. 怎么能方便的进行数据库存储过程的版本管理?
  4. MySQL 事务到底是隔离还是不隔离?
  5. 疫情加速人脸识别落地:多地试点AI门禁,居民刷脸核验健康码
  6. 数据从业者必读:抓取了一千亿个网页后我才明白,爬虫一点都不简单
  7. 中国工程院2019年院士增选第二轮候选人名单公布 李彦宏落选
  8. 入门十大Python机器学习算法(附代码)
  9. 史上最全的机器学习资料(上)
  10. extern C的主要作用简单解释