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

    python深浅拷贝

    拷贝

    lt=[1,2,3]
    lt2=lt
    lt.append(4)
    print(lt)
    # 因为列表是可变类型,所以lt值变化,lt2的值也会跟着变化
    print(lt2)
    

    [1,2,3,4]

    [1,2,3,4]

    浅拷贝

    import copy
    lt=[1,2,3,[4,5,6]]
    lt2= copy.copy(lt)
    lt[3].append(7)
    print(lt)
    print(lt2)
    lt.append(4)
    print(lt)
    print(lt2)
    

    [1, 2, 3, [4, 5, 6, 7]]
    [1, 2, 3, [4, 5, 6, 7]]
    [1, 2, 3, [4, 5, 6, 7], 4]
    [1, 2, 3, [4, 5, 6, 7]]

    深拷贝

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

    ['a', 'b', 'c', ['d', 'e', 'f'], 'g']
    ['a', 'b', 'c', ['d', 'e', 'f']]

    牢记:拷贝/浅拷贝/深拷贝 只针对可变数据类型

    三者的定义

    拷贝:当l2为l1的拷贝对象时,l1内的可变类型变化,lt2变化;l1内不可变类型变化,l2变化

    简单的赋值

    浅拷贝:当l2位l1的浅拷贝对象时,l1内的可变类型变化,l2变化;l1内的不可变类型变化,l2不变化

    copy.copy() 可变数据的类型中的内置方法.copy()

    深拷贝: 当l2为l1的深拷贝对象时,l1内的可变类型变化,l2不变化;l1内的不可变类型变化,l2不变化

    copy.deepcopy()

  • 相关阅读:
    uvaoj 401 Palindromes
    ThinkPHP框架研究之一 基本函数 M和D的区别
    camera
    总结
    安装ecshop出错
    在MySQL数据库建立多对多的数据表关系
    北京周边骑行路线总结
    解决PowerDesigner中DBMS设置的问题(Repost)
    zendstudio 汉化
    JavaScript高级程序设计-13:事件
  • 原文地址:https://www.cnblogs.com/aden668/p/11311145.html
Copyright © 2011-2022 走看看