• Python中的深浅拷贝的区别


    深、浅拷贝总结


    深拷贝

    • 拷贝可变数据类型,如列表容器:

      • a = [1, 2, [3, 4]]
      • b = copy.deepcopy(a)
    • a 与 b 所指的列表容器的空间地址不一致,即 id(a) != id(b)

    • a 与 b 列表容器中的可变数据类型的空间地址不一致

    • a 与 b 列表容器中的不可变数据类型的空间地址一致

    注意:

    • a 列表容器中的某些元素发生改变时,b 容器中的相应元素是否会发生相同的改变?

      答案是: a 容器中的任何元素发生任何变化,与 b 容器毫无瓜葛,b 中元素不会发生变化 !

    图示


    浅拷贝

    • 拷贝可变数据类型,如列表容器:

      • a = [1, 2, [3, 4]]
      • b = copy.copy(a)
    • a 与 b 所指的列表容器的空间地址不一致,即 id(a) != id(b)

    • a 与 b 列表容器中的所有元素的空间地址都是一致的!

    注意:

    • a 列表容器中的某些元素发生改变时,b 容器中的相应元素是否会发生相同的改变?

      答案是:

      1. 若 a 容器中的第一级元素发生改变,b 容器中的相应的元素不会发生改变!
      2. 若 a 容器中的第二级乃至更深层级的元素发生改变,b 容器中的相应元素也会发生相同的改变!

    图示


    深浅拷贝不可变元素

    import copy
    
    a = 10
    b = copy.copy(a)
    b = copy.deepcopy(a)
    

    当深浅拷贝不可变数据类型,如整型时,a 与 b 所指向的空间地址是一致的!

    图示

    抟扶摇而上者九万里
  • 相关阅读:
    使用bash编写Linux shell脚本参数和子壳
    开发项目的简单流程(需求、数据库、编码)
    hadoop和Hive的数据处理流程
    数据分析
    模糊聚类分析的实现
    贝叶斯1
    代理猎手
    贝叶斯2
    模糊聚类算法(FCM)和硬聚类算法(HCM)的VB6.0实现及
    C++模板
  • 原文地址:https://www.cnblogs.com/fengting0913/p/13346518.html
Copyright © 2020-2023  润新知