zoukankan      html  css  js  c++  java
  • 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
    
    浅拷贝
    
      只拷贝第一层,内层与与原数据类型公用一个内层(切片是浅拷贝)
    
    深拷贝
    
      从里到位全部拷贝,与原数据无关

      

  • 相关阅读:
    WinCE 手机互联
    Android 之 getSharedPreferences 和 getPreferences
    Android 之 ListView 点击响应代码?
    Android 之 selector
    昨天晚上被 Android 手机上的广告程序折磨了
    今天终于将第一个 Android NDK 程序编译、运行成功
    Android 4.0.1 源代码编译
    The connection to adb is down, and a severe error has occured.
    成绩转换
    兄弟郊游问题
  • 原文地址:https://www.cnblogs.com/zsdbk/p/8654044.html
Copyright © 2011-2022 走看看