python中的复制、浅拷贝与深拷贝

前些天用了下listA=listB的操作,发现对listB做改动,listA也会相应变化,这才知道原来list的复制也有好几种方法啊,用“=”这种就是赋值,它只是引用了原来的对象B,因此对B操作A会同样变化,对A操作B也会变化

而要复制出一个不受原list影响的list呢,就要用到拷贝

拷贝又分深拷贝和浅拷贝,具体参考这篇文章

简单讲浅拷贝就是只拷贝了最外面一层list,而list里面的每一个元素还是指向原来list中的元素

因此如果对list中的某个元素做改动的话,另一个list的相应元素也会受到影响

浅拷贝的方法有

b = a[:]   

b = [each for each in a]

b = list(a)

 b = copy.copy(a)

而深拷贝就可以拷贝出一个全新的list,和原来的list不再有关联,深拷贝的方法为:

from copy import deepcopy

b = copy.deepcopy(a)

除了list之外,panda中的dataframe对象的复制也同样有这三种情况

(一)用“=”赋值,新对象引用旧对象,两者同时变化

import pandas as pd

dfA= pd.DataFrame({ ‘a’:[0,0,0], ‘b’: [1,1,1]})

dfB = dfA

(二)浅拷贝

dfB= dfA.copy()

(三)深拷贝

from copy import deepcopy

dfB = deepcopy(dfA)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,167评论 1 32
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,090评论 0 13
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,008评论 0 38
  • 你的选择 没有错 是命运的无情 将你推进残酷的游戏人间 你说你终于得到了自由 你说没有她们的祝福也会过都很好 可是...
    小县城生活日记阅读 173评论 3 2
  • 亲亲我的宝贝 我要飞到无尽的夜空 摘颗星星做你的玩具
    一张叶小绘阅读 290评论 5 6