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']]
    
  • 相关阅读:
    MPLS TE 配置与各大属性调整
    Net学习日记_基础提高_9
    Net学习日记_基础提高_8
    Net学习日记_基础提高_7
    Net学习日记_基础提高_6
    Net学习日记_基础提高_5
    Net学习日记_基础提高_4
    Net学习日记_基础提高_3
    Net学习日记_基础提高_2
    Net学习日记_基础提高_1
  • 原文地址:https://www.cnblogs.com/agsol/p/11528334.html
Copyright © 2011-2022 走看看