python的 = 默认是对对象进行引用,可以理解为是传递了指针

当不想让现有的修改影响原对象时就需要进行copy

常用的copy有shallow copy和deep copy两种

shallow copy会对对象的次一级元素进行引用

而deep copy会对对象的所有元素都进行复制

python中数值和字符存储地址固定,在地址查找到这一级时,相同的元素,地址一定是相同的

用列表 a = [1, 2, [3, 4]] 和字符串 e = ‘123’ 做例子

import copya = [1, 2, [3, 4]]b = ac = copy.copy(a)d = copy.deepcopy(a)
print(id(a), id(b))
140285311739072 140285311739072print(id(a[2]), id(b[2]))
140285311739328 140285311739328print(id(a), id(c))
140285311739072 140285311740096print(id(a[2]), id(c[2]))
140285311739328 140285311739328print(id(a[2]), id(d[2]))
140285311739328 140285311739712print(id(a[0]), id(d[0]))
140285390186800 140285390186800
e = '123'f = '123'
print(id(e), id(f))
140285346185904 140285346185904# 注意,字符串中的1和数字1地址不同
print(id(e[0]), id(a[0]))
140285389341936 140285390186800

字符串又可以看做是字符的数组,可以切片索引,不同之处是字符串和字符一样,地址固定不变

g = copy.deepcopy(e)print(id(e), id(g))
140285346185904 140285346185904

python的copy函数在各大库中是通用的,但是各大库又有着自己的copy函数
以下为列举

numpy.copy()
shallow copyDataFrame.copy(deep=True)
默认deep=True,deep copy

这里需要注意的是,当DataFrame中的元素是可遍历的对象如列表时,这个对象并不会被深拷贝,它只会引用这个对象的地址


这里的[4, 5]只能被浅拷贝,即使使用copy.deepcopy()也一样。

python的copy相关推荐

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

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

  2. python 示例_带有示例的Python列表copy()方法

    python 示例 列出copy()方法 (List copy() Method) copy() method is used to copy a list, the method is called ...

  3. Python中copy,deepcopy,浅拷贝(“=”)和深拷贝(“copy.deepcopy()”)

    python中对于对象的拷贝分为浅拷贝(copy)和深拷贝(deepcopy)两种方式.其中浅拷贝由"="完成.而深拷贝由copy模块中deepcopy()函数担任. 浅拷贝和深拷 ...

  4. python中copy和deepcopy详细区别

    python中copy和deepcopy 在 python 中,标识一个对象唯一身份的是:对象的id(内存地址),对象类型,对象值. deepcopy是真正意义上的复制,深拷贝,被复制对象完全复制一遍 ...

  5. Python中copy()和deepcopy()的区别

    同样是copy,二者有什么不同呢今天我们就一探究竟!!! 关于copy()和deepcopy()的第一篇博客 初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从 ...

  6. python学习 - copy模块的浅复制(copy)与深复制(deepcopy)

    python学习 - copy模块的浅复制(copy)与深复制(deepcopy) 简介 copy.copy()详解 copy.deepcopy()详解 简介 在使用列表或者字典进行传递参数的时候,可 ...

  7. 关于python深copy与浅copy的一点理解

    一直对python深copy和浅copy似懂非懂的状态,看了这篇文章,觉得自己懂了很多,给各位参考! 出处:https://www.cnblogs.com/fandx/p/10462913.html ...

  8. python中copy怎么用_python中的拷贝copy模块怎么使用?

    原标题:python中的拷贝copy模块怎么使用? 许多人都见过这样一个游戏,让10个人通过耳边的悄悄话逐个传递一个信息,我们会发现在传递的过程中信息不断被修改,到了最后已经面目全非.今天小编就向大家 ...

  9. Python 深浅copy 和文件操作

    深浅copy 1,先看赋值运算. l1 = [1,2,3,['barry','alex']] l2 = l1l1[0] = 111 print(l1) # [111, 2, 3, ['barry', ...

最新文章

  1. 行业短信 运营思路_飞信、易信之后 三大运营商要借5G再战微信
  2. MySQL的SQL Profiler性能分析器
  3. Android Studio一直处于Building的解决方法
  4. Linux服务器与windows本地之间的数据同步
  5. 收藏!史上最全的30个生物实验技术及原理
  6. 具有LCS方法的通用文本比较工具
  7. 小米手机又一产品线退场,大步迈向高端市场!
  8. 【J2me3D系列学习文章之三】(立即模式)对立方体进行变换操作-旋转、缩放、平移...
  9. mavenFailed to execute goal org.apache.maven.plugins:maven-surefire-plugin解决方法
  10. linux编译c代码错误,linux - 使用ASAN时如何解决错误“无法运行C编译程序” - 堆栈内存溢出...
  11. 这本书会是你在算法分析道路上最好的养料
  12. CF984A Game
  13. 政法委重点人员联防联控系统开发,社会治安防控平台建设
  14. ICC2 user guide(四)Routing and Postroute Optimization
  15. 用python计算债券YTM
  16. 老罗的锤子,3000块钱贵吗?
  17. Android studio无法连接识别检测各种模拟器和手机的问题
  18. Android Launcher启动流程
  19. 常见的12个深度学习面试问题(提高篇)
  20. 求菲波那切数列第n项

热门文章

  1. ORA-01758: 要添加必需的 (NOT NULL) 列, 则表必须为空
  2. Python可视化30|matplotlib-辅助线(axhline|vlines|axvspa|axhspan)
  3. matlab的series,matlabseries基本用法
  4. 软件测试-为什么我们的自动化测试做不起来?
  5. 2008服务器系统只有回收站,解决Windows Server 2008 回收站无法清空故障
  6. Win10隐藏桌面回收站
  7. centos 卸载ffmpeg_CentOS7安装ffmpeg
  8. python读取redis指定key_Python获取Redis所有Key以及内容的方法
  9. 2008年南京夫子庙大型灯会
  10. 通俗易懂的DTO、VO、Entity的解析