copy与deepcopy

python 中的copy与deepcopy是内存数据的操作,但是两个函数有一定的区别。

1.copy

import copy
list = [1, [4, 5, 6], 2, 3]
list1 = copy.copy(list)print id(list)

print id(list[1])
print id(list1)
print id(list1[1])list[2] = 100
list[1][0] = 44
print list
print list1结果:
46925320
46912776
46967368
46912776
[1, [44, 5, 6], 100, 3]
[1, [44, 5, 6], 2, 3]

经过copy操作的得两个list,list1拥有两个同的地址(46925320和46967368),修改list时不会影响list1的值,但是 list中间的子列表[4,5,6]在list和list1中有相同的地址46912776,所以在修改list中的子列表会影响到list1中的子列表。

2.deepcopy

import copy
list = [1, [4, 5, 6], 2, 3]
list2 = copy.deepcopy(list)print id(list)
print id(list[1])
print id(list2)
print id(list2[1])list[2] = 100
list[1][0] = 44
print list
print list2结果:
59508232
59495688
59509384
59508168
[1, [44, 5, 6], 100, 3]
[1, [4, 5, 6], 2, 3]

经过deepcopy的list与list2用有不用的地址59508232,59509384,其中的子列表页拥有不同的地址, 所以不论怎样修改list都不用影响到list2。

结论:

经过copy操作的两个数据对象拥有不同的得地址空间 ,但是这个数据对象如果是内嵌了其他的复杂数据对象,这个内嵌的数据对象在

两个数据对象中拥有相同的地址空间,修改其中的值会互相印象。经过deepcopy的操作的不管是内层还是外层数据对象都拥有不同的地址空间,修改其中的值不会对两个对象都造成影响

转载于:https://www.cnblogs.com/FMS-Shaw/p/8546217.html

python copy与deepcopy (拷贝与深拷贝)相关推荐

  1. python copy deepcopy_python copy与deepcopy (拷贝与深拷贝)

    copy与deepcopy python 中的copy与deepcopy是内存数据的操作,但是两个函数有一定的区别. 1.copy importcopy list= [1, [4, 5, 6], 2, ...

  2. Python copy()与deepcopy()方法的区别

    copy()与deepcopy()之间的区分必须要涉及到python对于数据的存储方式. 首先直接上结论: 我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在.所以改变 ...

  3. python copy()和deepcopy()解释(浅拷贝、深拷贝)

    对于简单的 object,用 shallow copy 和 deep copy 没区别 复杂的 object, 如 list 中套着 list 的情况,shallow copy 中的 子list,并未 ...

  4. python:copy()和deepcopy()区别

    1.对象的赋值 都是进行对象引用(内存地址)传递,即'' b is a'' ,a 变 b 也变 2.copy.copy(x):浅拷贝 会创建一个新的对象,即 "b is not a" ...

  5. python copy()和deepcopy()解释(import copy)

    对于简单的 object,用 shallow copy 和 deep copy 没区别 复杂的 object, 如 list 中套着 list 的情况,shallow copy 中的 子list,并未 ...

  6. 一入python深似海--浅拷贝与深拷贝

    python中有一个模块copy,deepcopy函数用于深拷贝,copy函数用于浅拷贝. 要理解浅拷贝,必须先弄清楚python中的引用. 引用 Python中一切都是对象,变量中存放的是对象的引用 ...

  7. Python天天美味(22) - 拷贝对象(深拷贝deepcopy与浅拷贝copy)

    Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块. 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deep ...

  8. python中copy模块的使用,深拷贝和浅拷贝

    python中copy模块的使用,深拷贝和浅拷贝 文章目录: 一.copy模块的介绍 1.copy模块 二.copy模块的使用 拓展说明: 1.id( )函数的使用 2.is和== 的区别 pytho ...

  9. python copy函数用法_Python深浅拷贝

    预备知识一--python的变量及其存储 在详细的了解python中赋值.copy和deepcopy之前,我们还是要花一点时间来了解一下python内存中变量的存储情况. 在高级语言中,变量是对内存及 ...

最新文章

  1. Java awt Desktop 无法调用系统浏览器
  2. elasticsearch-查询基础篇
  3. 单片机 10种软件滤波方法的示例程序
  4. Leetcode 144. 二叉树的前序遍历 (每日一题 20210820)
  5. Leetcode 21:Merge Two Sorted Lists(golang实现合并两条已经排序的链表)
  6. 【Linux】一步一步学Linux——setfacl命令(117)
  7. via logo html,HTML5 Audio Description (via screenreader)
  8. 计算面平均边_计算机图形学补充2:齐次空间裁剪(Homogeneous Space Clipping)
  9. 给后辈的一点建议,面试建议
  10. python访问注册表_读取注册表的Python代码
  11. JavaScript 对象和包装类
  12. TCP/IP网络编程之域名及网络地址
  13. unbantu安装 mysql --- 百度云
  14. 201903版的idea markdown无法预览的问题
  15. Intel笔记本处理器发展简史(二)
  16. reactive streams与观察者模式
  17. Java的笔记开源软件_安装 MapGuide Open Source 2.0(Java版本)笔记
  18. IIS管理器FTP站点中FTP防火墙支持页面
  19. OpenCV4 利用点线距离判断最小外接矩形的距离
  20. 怎么显示文件后缀名?很容易的几个步骤

热门文章

  1. Linux发邮件之mail命令
  2. 关于封装的一个小问题和TA的例子
  3. jenkins集成sonar
  4. Lucene中string docvalues使用utf-16的优化
  5. 【转】EL表达式 (详解) .
  6. 像git一样管理数据,高效的数据管理平台TensorBay来了!
  7. 小鹏汽车自动驾驶内推(社招+校招)
  8. java中怎么判断依赖关系,在Maven 2中,我如何知道依赖性来自哪个依赖?
  9. 分布式深度学习,93页ppt概述最新DDL技术发展
  10. 获取远程linux版本,远程批量获取Linux和Windos操作系统版本(内核)