zoukankan      html  css  js  c++  java
  • 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 所指向的空间地址是一致的!

    图示

    抟扶摇而上者九万里
  • 相关阅读:
    进制转换
    01背包基础
    6-14 Inspector s Dilemma uva12118(欧拉道路)
    9-4 Unidirectional TSP uva116 (DP)
    8-4 奖品的价值 uva11491(贪心)
    9-1 A Spy in the Metro uva1025 城市里的间谍 (DP)
    8-3 Bits Equalizer uva12545
    8-2 Party Games uva1610 (贪心)
    自动发邮件功能
    窗口截图.py
  • 原文地址:https://www.cnblogs.com/fengting0913/p/13346518.html
Copyright © 2011-2022 走看看