zoukankan      html  css  js  c++  java
  • 深浅拷贝

    深浅拷贝

    可变类型和比可变类型

    值改变,id不变,称为可变类型

    值改变,id也改变的称为不可变类型

    拷贝

    仅加一个变量的引用指向

    l1 = ['a', 'b', 'c', ['d', 'e', 'f']]
    l2 = l1
    
    l1.append('g')
    
    print('l1',l1)
    print('l2',l2)
    
    l1 ['a', 'b', 'c', ['d', 'e', 'f'], 'g']
    l2 ['a', 'b', 'c', ['d', 'e', 'f'], 'g']
    

    浅拷贝

    如果原数据中含有引用类型,引用类型改变,拷贝数据也随之发生改变

    import copy
    
    l1 = ['a', 'b', 'c', ['d', 'e', 'f']]
    l2 = copy.copy(l1)
    
    l1.append('g')
    
    print('l1',l1)
    print('l2',l2)
    
    l1[3].append('g')
    
    print('l1',l1)
    print('l2',l2)
    
    l1 ['a', 'b', 'c', ['d', 'e', 'f'], 'g']
    l2 ['a', 'b', 'c', ['d', 'e', 'f']]
    l1 ['a', 'b', 'c', ['d', 'e', 'f', 'g'], 'g']
    l2 ['a', 'b', 'c', ['d', 'e', 'f', 'g']]
    

    深拷贝

    相当于另开辟了一个新的内存地址,拷贝里所有内容都不会因为原变量改变而改变

    import copy
    
    l1 = ['a', 'b', 'c', ['d', 'e', 'f']]
    l2 = copy.deepcopy(l1)
    
    l1.append('g')
    
    print('l1',l1)
    print('l2',l2)
    
    l1[3].append('g')
    
    print('l1',l1)
    print('l2',l2)
    
    l1 ['a', 'b', 'c', ['d', 'e', 'f'], 'g']
    l2 ['a', 'b', 'c', ['d', 'e', 'f']]
    l1 ['a', 'b', 'c', ['d', 'e', 'f', 'g'], 'g']
    l2 ['a', 'b', 'c', ['d', 'e', 'f']]
    
  • 相关阅读:
    Vue项目中使用Vue-Quill-Editor富文本编辑器插件
    Element-UI中的Cascader 级联选择器高度以及位置问题
    Sublime中同一个文件进行分屏显示
    Oracle的clob数据类型
    查看Nginx版本号的几种方式
    华为路由器EasyNAT&NAT Server
    huawei路由器NAT配置
    15
    14
    13
  • 原文地址:https://www.cnblogs.com/agsol/p/11528334.html
Copyright © 2011-2022 走看看