• Python-基础-day4


     深浅copy                         

    1、先看赋值运算

    h1 = [1,2,3,['aihuidi','hhhh']]
    h2 = h1
    h1[0] = 111
    print(h1)
    print(h2)
    #结果:
    # [111, 2, 3, ['aihuidi', 'hhhh']]
    # [111, 2, 3, ['aihuidi', 'hhhh']]
    h1[3][0] = 'file'
    print(h1)
    print(h2)
    #结果:
    # [111, 2, 3, ['file', 'hhhh']]
    # [111, 2, 3, ['file', 'hhhh']]

    ps:对与赋值运算来说,h1和h2指向的是同一个内存地址,所以它们是完全一样的。

    为什么要拷贝?

    1
    当进行修改时,想要保留原来的数据和修改后的数据

    数字字符串 和 集合 在修改时的差异? (深浅拷贝不同的终极原因)

    1
    2
    3
    在修改数据时:
        数字字符串:在内存中新建一份数据
             集合:修改内存中的同一份数据

    对于集合,如何保留其修改前和修改后的数据?

    1
    在内存中拷贝一份

    对于集合,如何拷贝其n层元素同时拷贝?

    1
    深拷贝

    2,浅拷贝copy。

    对于浅copy来说,只是在内存中重新创建了开辟了一个空间存放一个新列表,但是新列表中的元素与原列表中的元素是公用的。

    3,深拷贝deepcopy。

    对于深copy来说,列表是在内存中重新创建的,列表中可变的数据类型是重新创建的,列表中的不可变的数据类型是公用的。

  • 相关阅读:
    JDK1.0-缓冲流
    笔试错误1
    JVM 垃圾收集(转)
    Trie树和后缀树(转,简化)
    海量数据处理(转,简化)
    Struts2 内核之我见(转) -(主要是拦截器链和过滤链介绍和源码及其设计模式)
    phpize增加php模块
    Ubuntu下SVN安装和配置
    Linux下SVN配置hook经验总结
    Kruakal 算法——练习总结
  • 原文地址:https://www.cnblogs.com/aihuidi/p/10445062.html
Copyright © 2020-2023  润新知