美文网首页
python = ,深拷贝与浅拷贝的区别

python = ,深拷贝与浅拷贝的区别

作者: dons_1 | 来源:发表于2019-11-07 20:55 被阅读0次
    import copy
    
    a = [1, 2, 3, 4, ['a', 'b']]
    b = a
    c = copy.copy(a)
    d = copy.deepcopy(a)
    
    a.append(5)
    a[4].append('c')
    if __name__ == '__main__':
        for item in (a,b,c,d):
            print(item)
    print(a[0])
    

    [1, 2, 3, 4, ['a', 'b', 'c'], 5]
    [1, 2, 3, 4, ['a', 'b', 'c'], 5]
    [1, 2, 3, 4, ['a', 'b', 'c']]
    [1, 2, 3, 4, ['a', 'b']]

    • 现 列表的地址为0x01,列表内部 「列表(内)」的地址为0x02,列表内部第5位只是一个指向0x02的引用。
      a = b 时,a,b均指向 0x01

    • c = copy(a)时,浅拷贝新建了一个「列表(外)-2」地址位0x03,「列表(内)」的地址仍为0x02。
      ab指向0x01,c指向0x03,但是「列表(内)」均指向0x03

    • d=deepcopy(a) 是,列表内与外都是新开辟的内存,分别为0x05,0x04。

    • a.append(5) 对0x01的数据进行改动
      a[4].append(c) 对0x03的数据进行改动

    相关文章

      网友评论

          本文标题:python = ,深拷贝与浅拷贝的区别

          本文链接:https://www.haomeiwen.com/subject/wzcbbctx.html