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 !
  • 相关阅读:
    链表相加
    Unity 摄像机跟随
    整数反转
    两数和
    频繁项集挖掘思路
    有关于二进制的乘法计算(原码一位乘)
    JAVA面向对象(下)
    JAVAAPI
    JAVA面向对象()上)
    JAVA基础第一章
  • 原文地址:https://www.cnblogs.com/maxiaohei/p/7789058.html
Copyright © 2011-2022 走看看