zoukankan      html  css  js  c++  java
  • Python 深浅拷贝

    浅拷贝

    a = [1, 2, 3, 4]
    b = b.copy()         # 把 a 列表复制一份
    print(b)
    
    b[0] = 5             # 修改 b 列表的中的元素 
    print(a)             # 打印 a 列表
    print(b)             # 打印 b 列表
    

    运行结果:

    我们在这里看到 b 修改的元素并没有影响到 a 列表。

    接下来我们把 a 列表的元素改一下再使用 copy 方法:

    a = [[1, 2], 3, 4]   # a 列表中包含了一个列表
    b = a.copy()
    print(b)
    
    b[0][0] = 8          # 修改 b 列表里面的元素
    print(a)
    print(b)
    

    运行结果:

    现在 a,b 列表中的元素都改变了
    下面是图解,浅拷贝只是拷贝了列表元素中的第一层,更深层并没有被拷贝。这里 b 拷贝了 a[0] 的内存地址 0088,通过 b[0][0] 修改了元素。a[0],b][0] 的内存地址并没有发生改变。

    深拷贝

    import copy
    a = [[1, 2], 3, 4]
    b = copy.deepcopy(a)
    print(b)
    
    b[0][0] = 8
    print(a)
    print(b)
    

    运行结果:

    使用了深拷贝后,对于 b 列表的改变并不会影响到 a 列表。

    发现一片不错的文章,大伙也可以进行参考:
    http://www.cnblogs.com/yuanchenqi/articles/5782764.html

  • 相关阅读:
    第一阶段各队建议
    解决死锁四大方式
    进程和线程区别
    windows 地址空间分配
    Linux下用户组、文件权限详解
    2016总结
    class内部处理
    c++ devived object model
    static
    reinterpret
  • 原文地址:https://www.cnblogs.com/klvchen/p/8691884.html
Copyright © 2011-2022 走看看