zoukankan      html  css  js  c++  java
  • =、浅拷贝、深拷贝小结

    >>> import copy
    // =  指向同一个内存空间,操作的是同一个对象
    
    >>> t1 = {'a':1, 'b':2}
    
    >>> t2 = t1
    
    >>> id(t1)
    
    42559696
    
    >>> id(t2)
    
    42559696
    
    

    浅拷贝是对于一个对象的顶层拷贝

    通俗的理解是:拷贝了引用,并没有拷贝内容

    >>> t1 = {'a':1, 'b':2}
    
    >>> t2 = copy.copy(t1)
    
    >>> t2
    
    {'a': 1, 'b': 2}
    
    >>> t1
    
    {'a': 1, 'b': 2}
    
    >>> t2.pop('b')
    
    2
    
    >>> t2
    
    {'a': 1}
    
    >>> t1
    
    {'a': 1, 'b': 2}
    
    // 但是子元素为可变类型时,它是引用类似于在子元素上使用 ‘’=‘’
    
    >>> t1 = {'a':1, 'b':2, 'c':[1,2,3]}
    
    >>> t2 = copy.copy(t1)
    
    >>> t2['c'][0] = 4
    
    >>> t2
    
    {'a': 1, 'b': 2, 'c': [4, 2, 3]}
    
    >>> t1
    
    {'a': 1, 'b': 2, 'c': [4, 2, 3]}
    
    
    
    // 深拷贝:递归的拷贝所有元素,即使子元素使用的是可变类型,深拷贝的结果是完全不相干

    深拷贝 copy.deepcopy  深拷贝是对于一个对象所有层次的拷贝(递归)

    >>> t1 = {'a':1, 'b':2, 'c':[1,2,3]}
    
    >>> t2 = copy.deepcopy(t1)
    
    >>> t2['c'][0] = 4
    
    >>> t2
    
    {'a': 1, 'b': 2, 'c': [4, 2, 3]}
    
    >>> t1
    
    {'a': 1, 'b': 2, 'c': [1 2, 3]}
    LESS IS MORE !
  • 相关阅读:
    Splay 区间操作(二)
    P1351 联合权值
    Splay 区间操作
    P1801 黑匣子_NOI导刊2010提高(06)
    P3620 [APIO/CTSC 2007]数据备份
    T25990 [Wind Festival]Running In The Sky
    P1484 种树
    P4177 [CEOI2008]order
    题解 P2762 【太空飞行计划问题】
    dalao&话
  • 原文地址:https://www.cnblogs.com/maxiaohei/p/7789058.html
Copyright © 2011-2022 走看看