zoukankan      html  css  js  c++  java
  • 深、浅copy

    深、浅copy多用于列表


    浅copy:第一层中不变的数据是独立的,可变类型元素指向同一块内存地址###

    l1 = [1,2,3,["a","b"]]
    l2 = l1.copy()
    l1.append(666)
    print(l1)
    print(l2)
    ---------
    [1, 2, 3, ['a', 'b'], 666]
    [1, 2, 3, ['a', 'b']]
    ----------
    # print(id(l1),id(l2))  #4335432200 4335434184
    # print(id(l1[-1]),id(l2[-1]))  #4335441416 4335441416
    
    

    打印两个列表的id可以发现两个列表本身的id是不同的,即时两个不同的内存地址,但是对于第二层的列表的id来看,他们是只想同一块内存地址,所以当他们其中任意一个对里面的列表进行增删改等操作,都会反应到两个列表中

    深copy:所有的数据都是完全独立###

    import copy
    l1 = [1,2,3,["a","b"]]
    l2 = copy.deepcopy(l1)
    ------------------
    print(l2)
    print(id(l1),id(l2))  
    print(id(l1[-1]),id(l2[-1]))
    ----------------
    [1, 2, 3, ['a', 'b']]
    4334215048 4334284104
    4334275016 4334283080
    

    打印两个列表的id,可以发现两个列表的id不相同,同时打印他们第二层的列表,id也是不相同,这说明他们都是属于不同的内存地址,各自的增删改查是互不影响的。

    注意:列表的切片属于浅copy

  • 相关阅读:
    GDI+常用操作、入门解析
    实用SQL语句大全
    SQL语句全解析
    ASP.NET MVC 浅析
    C#版文件分割器
    转一个orbitpanel GIS
    怎么给listbox 的item 添加动画1? GIS
    怎么给listbox 的item 添加动画? GIS
    关于查找可视树的一点问题 GIS
    判断gridview 滑动到最右端 GIS
  • 原文地址:https://www.cnblogs.com/xiayuhao/p/9459628.html
Copyright © 2011-2022 走看看