zoukankan      html  css  js  c++  java
  • 深浅拷贝和赋值关系

    list1 = [1,2,3,4,5,6]
    list2 = list1
    print(list2)
    list1[1]=['tao']
    print('list1',list1)
    print('list2',list2)
    
    '''
    [1, 2, 3, 4, 5, 6]
    list1 [1, ['tao'], 3, 4, 5, 6]
    list2 [1, ['tao'], 3, 4, 5, 6]
    '''
    
    '''
    赋值就等于完全共享了资源,一个值的改变会完全被另一个值共享。
    然而有的时候,我们偏偏需要将一份数据的原始内容保留一份,再去处理数据,这个时候使用赋值就不够明智了。
    python为这种需求提供了copy模块。提供了两种主要的copy方法,一种是普通的copy,另一种是deepcopy。我们称前者是浅拷贝,后者为深拷贝。
    '''
    import copy
    list = [5,6,7]
    list3 = [1,2,3,4,list]
    list4 = copy.copy(list3)
    list3[0] = 'tao'
    print('list3:',list3)
    print('list4:',list4)
    '''
    list3: ['tao', 2, 3, 4, [5, 6, 7]]
    list4: [1, 2, 3, 4, [5, 6, 7]]
    '''
    
    '''
    
    深拷贝就是在内存中重新开辟一块空间,不管数据结构多么复杂,只要遇到可能发生改变的数据类型,就重新开辟一块内存空间把内容复制下来,
    直到最后一层,不再有复杂的数据类型,就保持其原引用。这样,不管数据结构多么的复杂,数据之间的修改都不会相互影响。这就是深拷贝~~~
    '''

    推荐一个比较认同的解释:http://www.cnblogs.com/Eva-J/p/5534037.html

  • 相关阅读:
    POJ2528——Mayor's posters (线段树区间更新查询+离散化)
    C++STL——unique函数总结
    HDU 5618 Jam's problem again(CDQ分治+树状数组(三维模板题))
    c++解决爆栈,手动加栈!
    POJ1741——Tree (树分治之点分治)
    树分治之点分治模板总结
    CodeForces
    字典树
    卡特兰数高精度算法
    基数排序
  • 原文地址:https://www.cnblogs.com/dingyutao/p/9159007.html
Copyright © 2011-2022 走看看