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

    Python:深浅copy

    浅copy 

    浅拷贝就是对引用的拷贝,执拷贝父对象,里面的数据不拷贝出来,其中的数据与原对象里面数据用的是相同的地址空间

    #浅copy 第一层各自独立,从第二层开始,共用一个内存地址
    s1 = [1, 2, 3,[11,22]]         
    s2 = s1.copy()
    s1[-1].append(666)                  #在s1最后增加元素‘666’,s2也会增加
    print(s1, s2)                        
    print(id(s1), id(s2))               #打印s1与s2的id号,是不同的
    print(id(s1[-1]), id(s2[-1]))       #打印s1与s2中子列表的id号,是相同的
    
    [1, 2, 3, [11, 22, 666]] [1, 2, 3, [11, 22, 666]]
    52642760 53470992
    53471152 53471152

    切片 浅copy

    s1 = [1, 2, 3, [11, 22]]
    s2 = s1[:]
    s1.insert(1,66)
    print(s1, s2)
    s1[-1].append(666)
    print(s1, s2)
    
    [1, 66, 2, 3, [11, 22]] [1, 2, 3, [11, 22]]
    [1, 66, 2, 3, [11, 22, 666]] [1, 2, 3, [11, 22, 666]]

    深copy

    深copy 无论多少层,都是互相独立的。

    import copy               #深copy 需要使用copy模块
    s1 = [1, 2, 3,[11,22]]
    s2 = copy.deepcopy(s1)
    s1.append(666)
    print(s1, s2)
    
    s1 = [1, 2, 3,[11,22]]
    s2 = copy.deepcopy(s1)
    s1[-1].append(666)
    print(s1, s2)
    
    [1, 2, 3, [11, 22], 666] [1, 2, 3, [11, 22]]
    [1, 2, 3, [11, 22, 666]] [1, 2, 3, [11, 22]]
  • 相关阅读:
    书_Delphi
    20160226
    SVG_style_script
    辅助
    电影_Z
    Windows下软件调试
    20160221
    Qt5.3.2_vs10_发布时所需DLL的路径
    android intent 传数据
    android 消息机制
  • 原文地址:https://www.cnblogs.com/bailo/p/9085255.html
Copyright © 2011-2022 走看看