• 拷贝和深浅拷贝


    深浅拷贝

    一、拷贝(赋值)

    当list2为list的拷贝对象时,list内的可变数据类型变化,list2变化;list内的不可变数据类型变化,list2 变化。总之、list变化list2一定变化

    list = [1,2,3,4,]
    list2 = list
    list.append(5)
    print(list)
    print(list2)
    

    [1, 2, 3, 4, 5]
    [1, 2, 3, 4, 5]

    二、浅拷贝 (copy.copy)

    当list2为list的拷贝对象时,list内的不可变数据类型变化,list2 不会发生变化

    import copy
    list = [1,2,3,4]
    list2 = copy.copy(list)
    list.append(6)
    print(list)
    print(list2)
    

    [1, 2, 3, 4, 6]
    [1, 2, 3, 4]

    当list2为list的拷贝对象时,list内的可变数据类型变化,list2变化,这里的[5,6,7]就是个可变数据类型啊!

    import copy
    list = [1,2,3,4,[5,6,7]]
    list2 = copy.copy(list)
    # list[-1].append(2)     #这种是直接在列表后面进行添加
    list[-1].insert(1,8)     #这种是插入、可以指定在列表任意位置插入
    print(list)
    print(list2)
    

    [1, 2, 3, 4, [5, 5, 6, 7]]

    [1, 2, 3, 4, [5, 5, 6, 7]]

    三、深拷贝

    当list2为list的拷贝对象时,list内无论是可变类型变化还是不可变数据类型变化,list2都不会发生变化

    import copy
    list = [1,2,3,4,[5,6,7]]
    list2 = copy.deepcopy(list)
    list[-1].append(9)
    print(list)
    print(list2)
    

    [1, 2, 3, 4, [5, 6, 7, 9]]
    [1, 2, 3, 4, [5, 6, 7]]

    牢记:拷贝/浅拷贝/深拷贝/只针对可变数据类型

    拷贝 浅拷贝 深拷贝
    list变化list2变化 list可变数据类型变化,list2变化
    list不可变数据类型变化,list2不变化
    list变化,list无变化
  • 相关阅读:
    思源黑体、思源宋体的 TTF 版本
    MySQL Workbench导入/导出SQL文件的方法
    高精度计算器
    树的直径和重心
    linux 分区 和 硬盘分区的对应关系
    layer 子页面传值给父页面
    php复制文件夹所有文件
    php删除文件夹下所有的文件夹和文件
    PHP将多级目录打包成zip文件
    云原生应用开发“12Factors”
  • 原文地址:https://www.cnblogs.com/wwbplus/p/11322389.html
Copyright © 2020-2023  润新知