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

    1.深拷贝VS浅拷贝

    • 所谓浅拷贝就是对引用的拷贝 

      (里面的数据不拷贝出来,其中的数据与原对象里面数据用的是相同的地址空间)

    • 所谓深拷贝就是对对象的资源的拷贝

      (里面的数据拷贝出来。深拷贝有自己的存储空间,有自己定义的数据,跟原对象一点关系也没有。连根拔起)

    举个例子:

      浅拷贝就是拷贝电影名,深拷贝就是拷贝电影名指向的数据(即可以看的电影)。

    注意:

    对不可变类型的拷贝:

      (1)如果其中全部是不可变类型的数据,copy.copy 与 copy.deepcopy结果相同,都是指向引用

      (2)只要其中有一个可变类型的数据,copy.deepcopy依然是深拷贝,copy.copy 还是指向

      (别漏出可变的破绽,深拷贝拷死你没商量ヾ(◍°∇°◍)ノ゙)

    2.拷贝的其他方式

      (1)列表切片 属于浅拷贝

    d = c[:] 
    d = copy.copy(c) 
    两者一样, 属于浅拷贝 

      (2)字典 copy方法  属于浅拷贝

      拷贝key,指向和原来相同的 value

    3.对赋值的认识:

    • 赋值:将一个对象的地址赋值给一个变量,让变量指向该地址( 旧瓶装旧酒 )
    • 修改不可变对象(str、tuple)需要开辟新的空间
    • 修改可变对象(list等)不需要开辟新的空间
  • 相关阅读:
    soj#547 bzoj5046 分糖果游戏
    soj#551 loj#2833 帐篷
    nb哒LCA
    soj#532 set p3175
    p4042 [AHOI2014/JSOI2014]骑士游戏
    p1501 [国家集训队]Tree II
    908G New Year and Original Order
    908D New Year and Arbitrary Arrangement
    EZOJ #258
    EZOJ #257
  • 原文地址:https://www.cnblogs.com/liangmingshen/p/9245803.html
Copyright © 2011-2022 走看看