• Day7 数据类型转化 + 深浅copy


    一。数据类型的转化

    int     ——    bool

    bool  ——  int

    int  ——  str

    str ——  int

    str —— bool

    bool —— str

    tuple —— str

    str不能转化成tuple

     

    深浅copy

    1,先看赋值运算。

    复制代码
    l1 = [1,2,3,['barry','alex']]
    l2 = l1
    
    l1[0] = 111
    print(l1)  # [111, 2, 3, ['barry', 'alex']]
    print(l2)  # [111, 2, 3, ['barry', 'alex']]
    
    l1[3][0] = 'wusir'
    print(l1)  # [111, 2, 3, ['wusir', 'alex']]
    print(l2)  # [111, 2, 3, ['wusir', 'alex']]
    复制代码

    对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的。

    2,浅拷贝copy。

    复制代码
    l1 = [1,2,3,['barry','alex']]
    
    l2 = l1.copy() print(l1,id(l1)) # [1, 2, 3, ['barry', 'alex']] 2380296895816 print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2380296895048
    l1[1] = 222
    print(l1,id(l1)) # [1, 222, 3, ['barry', 'alex']] 2593038941128
    print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2593038941896
     
    l1[3][0] = 'wusir' print(l1,id(l1[3])) # [1, 2, 3, ['wusir', 'alex']] 1732315659016 print(l2,id(l2[3])) # [1, 2, 3, ['wusir', 'alex']] 1732315659016
    复制代码

    对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。

    3,深拷贝deepcopy。

    复制代码
    import copy
    l1 = [1,2,3,['barry','alex']]
    l2 = copy.deepcopy(l1)
    
    print(l1,id(l1))  # [1, 2, 3, ['barry', 'alex']] 2915377167816
    print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2915377167048
    
    l1[1] = 222
    print(l1,id(l1))  # [1, 222, 3, ['barry', 'alex']] 2915377167816
    print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2915377167048
    
    l1[3][0] = 'wusir'
    print(l1,id(l1[3]))  # [1, 222, 3, ['wusir', 'alex']] 2915377167240
    print(l2,id(l2[3]))  # [1, 2, 3, ['barry', 'alex']] 2915377167304
    复制代码

    对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。

    小结:

    赋值运算:既不是深copy也不是浅copy
    
    浅拷贝
    
      只拷贝第一层,内层与与原数据类型公用一个内层(切片是浅拷贝)
    
    深拷贝
    
      从里到位全部拷贝,与原数据无关

      

  • 相关阅读:
    BUUCTF [XMAN2018排位赛]四道misc题汇总
    祥云杯2020 Misc题解
    win10更换pip源
    BUUCTF N1BOOK配套题目
    kali下docker安装教程
    湖湘杯2020 Misc题解
    7号夺宝1元购iPhone6s 1元众筹怎么玩
    html5 的服务器推送 Server-sent Events和 websocket这两个是不是同一个东西,是两个不同的?
    WebSocket 是什么原理?为什么可以实现持久连接?
    使用HTML5的十大原因
  • 原文地址:https://www.cnblogs.com/zsdbk/p/8654044.html
Copyright © 2020-2023  润新知