• python列表的复制,扯一下浅拷贝与深拷贝的区别


    将一个列表的数据复制到另一个列表中。
    使用列表[:],可以调用copy模块

    import copy
    
    A = [21,22,23,24,['a','b','c','d'],25,26]
    B = A                                       #直接赋值
    C = A[:]                                    #浅拷贝
    D = copy.copy(A)                            #浅拷贝
    E = copy.deepcopy(A)                        #深拷贝
    
    #看看深拷贝与浅拷贝的区别
    #在A数组的最尾处加一个数
    A.append(99)
    #在A数组里面的数组最尾处加一个数
    A[4].append(66)
    
    print("起始列表A------------>",A)
    print("直接把A列表赋值给B---->",B)
    print("直接浅拷贝A列表给C---->",C)
    print("直接浅拷贝A列表给D---->",D)
    print("直接深拷贝A列表给E---->",E)
    运行结果如下:
    起始列表A------------> [21, 22, 23, 24, ['a', 'b', 'c', 'd', 66], 25, 26, 99] 直接把A列表赋值给B----> [21, 22, 23, 24, ['a', 'b', 'c', 'd', 66], 25, 26, 99] 直接浅拷贝A列表给C----> [21, 22, 23, 24, ['a', 'b', 'c', 'd', 66], 25, 26] 直接浅拷贝A列表给D----> [21, 22, 23, 24, ['a', 'b', 'c', 'd', 66], 25, 26] 直接深拷贝A列表给E----> [21, 22, 23, 24, ['a', 'b', 'c', 'd'], 25, 26]

    通过以上的例子我们来分析一下这几种复制列表的不同

    1、直接赋值,其实就是默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的B也会做相同的改变

    2、浅拷贝,没有拷贝子对象,所以原始数据改变,子对象也会改变

    3、深拷贝,包含对象里面的子对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变











  • 相关阅读:
    redis sentinel搭建以及在jedis中使用
    redis入门指南书中概要
    mysql crash cource 书中实例
    图片服务器域名选择
    自行实现一个简易RPC框架
    webservice基础
    maven实战
    类似◇形的图形,四边都是对应的行数的数字。
    C 中随机数
    给特定的寄存器赋值,读特定的寄存器
  • 原文地址:https://www.cnblogs.com/pychina/p/10171909.html
Copyright © 2020-2023  润新知