zoukankan      html  css  js  c++  java
  • python之快速理解浅拷贝与深拷贝

    赋值:对象的引用,可以理解为给对象起个别名,数据完全共享

    浅拷贝(copy):拷贝的很浅,数据半共享

    深拷贝(deepcopy):拷贝的很深入,数据不共享(因为内存不共享)

    一:赋值是数据完全共享的(赋值后对象指向同一个内存地址,如果是可变类型,比如列表,修改其中的一个,另一跟着改变。如果是不可变类型,如字符串,修改其中的一个,另一个不会改变)

    让我们看下面这个例子:

    我们发现赋值给list2后,修改list2,list1也跟着改变了,并且对象指向同一内存地址

    二:浅拷贝,也就是把对象a的所有内容,找一个内存空间再存放一份,然后赋值给变量b,但是只拷贝了外层。指向不同的内存地址

    我们修改list2的子列表‘99’发现,list1也修改了,也就是说子列表是同一对象

    我们修改了list2的外层列表‘’88‘’发现,list1并没有跟着改变,也就是外层列表不是同一对象

    三:深拷贝,完全复制其数据存放另一个独立的内存中,外层列表和子列表都是独立的对象

    无论我们修改外层还是子列表,list1都不会跟着改变,数据不会相互影响,这就是深拷贝

    总结:当对象只含有值的话,浅拷贝就可以解决的,当对象包含多层的,向上面这种例子(列表中包含列表的),就使用深拷贝

  • 相关阅读:
    《小C QQ空间转帖、分享工具》之QQ空间数据传递的g_tk算法(C#)
    2.线性回归
    1(3).频率派 VS 贝叶斯派
    sklearn---SVM
    sklearn总览
    word转pdf时图片质量下降的解决方案
    python-字符串前面添加u,r,b的含义
    matplotlib---保存图片出现的问题
    matplotlib---设置线条颜色及形状
    numpy中arange()和linspace()区别
  • 原文地址:https://www.cnblogs.com/king2/p/13564597.html
Copyright © 2011-2022 走看看