• 深浅拷贝和赋值关系


    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

  • 相关阅读:
    ggplot2 上篇
    R笔记1
    读书笔记 第2章 数据挖掘概述
    读书笔记 数据化营销
    [LeetCode] 172. 阶乘后的零
    [LeetCode] 171. Excel表列序号
    [LeetCode] 169. 求众数
    知乎使用selenium反爬虫的解决方案
    [LeetCode] 168. Excel表列名称
    [LeetCode] 167. 两数之和 II
  • 原文地址:https://www.cnblogs.com/dingyutao/p/9159007.html
Copyright © 2020-2023  润新知