概述今天主要来看看Python中的浅拷贝和深拷贝内容 , 这里用一个实例来说明~
需求:将一个列表的数据复制到另一个列表中 。
思路:【copy是什么意思?python每日一练之如何copy?】使用列表[:] , 拿不准可以调用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方面的内容 , 感兴趣的朋友可以关注下~
推荐阅读
- 高处不胜寒的意思是什么?高处真的比较冷一些吗?
- 普通话考试网上报名官网入口,成都普通话考试据说可以网上报名了但是得提前一周意思是这
- 迪拜王子的车,迪拜王子的黄金座驾是什么车
- 青岛 热点 房价,青岛的房价走势是什么
- 是什么造成了大学生就业难?
- 贪玩传世是什么游戏,来现场听陈小春唱《贪玩传世》
- 谱尼的力量是什么意思,它天克五神兽和谱尼
- 2020商业新愿景,suse系统
- 多普达d810,多普达手机D810它的好和坏是什么
- oppo r7 plus,oppo r7plus是什么处理器