zoukankan      html  css  js  c++  java
  • 番外:深浅copy

    进击のpython

    *****

    深浅copy


    copy是什么意思?

    复制 (又学一个单词!开不开森)

    那啥叫复制呢?

    百度百科上给的解释是:仿原样品制造


    我们曾经有过这样的印象

    a = "zhangsan"
    b = a
    a = "jack"
    print(a, b)  # jack zhangsan
    

    这样就相当于用 b 复制了 一遍 a 对吧!

    那你在网上down文章的时候,作者把文章删除了

    你的电脑里就没了吗?

    要是没了?那我存在硬盘里的女神学习资料岂不是保存不住了?

    所以我用b复制一份之后,a就算变了。也跟我b没得关系

    但是我们还发现过这样的情况

    a = [1, 2, 3, [1, 2, 3]]
    b = a
    a[-1][1] = "jack"
    print(a, b)  # [1, 2, 3, [1, 'jack', 3]] [1, 2, 3, [1, 'jack', 3]]
    

    不对啊!!!!!

    这和刚开始说的不一样啊!!!!

    a变了b怎么也变了???????


    当我们操作字符串的时候,就相当于在内存地址(黄色框)里开辟一个空间,里面存afwaf,并把它叫做 a

    然后当 b=a 时看似是 红色的b指向a 实际上是 绿色的b指向afwaf

    然后当 a = af 的时候,又开辟一个空间,里面存 af 并把它叫做 a

    不能有两个一样的变量名(讲变量的时候讲过了)

    所以 a 指向 afwaf 的红色线就断了

    所以现在

    a 就是 af b就是 afwaf


    而当我们操作可变的数据类型,比如列表,字典等,就是这样的

    当我对列表进行修改的时候,就不再开辟新的内存空间

    而是!共!享!内!存!空!间!

    这样,a 和 b 就是始终相等的

    给你一张偷来的图

    可以看到 copy 的 只是第一层的内存地址,但是第二层,还是共享内存空间的!

    所以,只改变第一层,就不会共享,各改各的

    但是改到第二层,就会共享,你动我也动!


    深copy 就一句话

    你动你的,跟我没关系

    所以我下载的女神学习资料用的就是深copy这个形式

    来个练习题吧


    *有点别扭*
    *多做习题*
  • 相关阅读:
    有关创造力的书籍推荐
    如何做好组织管理?
    EMBA方面的经典自学教材、书籍推荐
    人力资源管理书单推荐
    创新创业类书籍推荐
    企业如何进行组织变革?
    VMS(VELO) tips[转载]
    SAP R/3系统的概念与介绍
    Project Record: RCM Program–Change Delivery Date in VMS Action[转载]
    SQL Server触发器创建、删除、修改、查看示例步骤
  • 原文地址:https://www.cnblogs.com/jevious/p/11170827.html
Copyright © 2011-2022 走看看