Python-基础-day4

发布时间:2019-05-15 21:48:10编辑:auto阅读(1968)

     深浅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来说,列表是在内存中重新创建的,列表中可变的数据类型是重新创建的,列表中的不可变的数据类型是公用的。

     

关键字