zoukankan      html  css  js  c++  java
  • day0311 深浅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, '太白', True, (1,2,3), [22, 33]]
    l2 = l1.copy()
    print(id(l1), id(l2))  # 2713214468360 2713214524680
    print(id(l1[-2]), id(l2[-2]))  # 2547618888008 2547618888008
    print(id(l1[-1]),id(l2[-1]))  # 2547620322952 2547620322952
    
    # 不同代码块下:
    >>> l1 = [1, '太白', True, (1, 2, 3), [22, 33]]
    >>> l2 = l1.copy()
    >>> print(id(l1), id(l2))
    1477183162696
    >>> print(id(l1[-2]), id(l2[-2]))
    1477181814032
    >>> print(id(l1[-1]), id(l2[-1]))
    1477183162504
    

      对于浅copy来说,只是在内存中重新创建了开辟了一个空间存放一个新列表,但是新列表中的元素与原列表中的元素是公用的

    3.深拷贝 deepcopy

    # 同一代码块下
    import copy
    l1 = [1, 'alex', True, (1,2,3), [22, 33]]
    l2 = copy.deepcopy(l1)
    print(id(l1), id(l2))  # 2788324482440 2788324483016
    print(id(l1[0]),id(l2[0]))  # 1470562768 1470562768
    print(id(l1[-1]),id(l2[-1]))  # 2788324482632 2788324482696
    print(id(l1[-2]),id(l2[-2]))  # 2788323047752 2788323047752
    
    # 不同代码块下
    >>> import copy
    >>> l1 = [1, '太白', True, (1, 2, 3), [22, 33]]
    >>> l2 = copy.deepcopy(l1)
    >>> print(id(l1), id(l2))
    1477183162632
    >>> print(id(0), id(0))
    1470562736
    >>> print(id(-2), id(-2))
    1470562672
    >>> print(id(l1[-1]), id(l2[-1]))
    1477183162312
    

      对于深copy来说,列表是在内存中重新创建的,列表中可变的数据类型是重新创建的,列表中的不可变的数据类型是公用的。

  • 相关阅读:
    lqb 基础练习 数列特征
    lqb 基础练习 查找整数 (遍历)
    lqb 基础练习 杨辉三角形
    lqb 基础练习 特殊的数字
    lqb 基础练习 回文数
    lqb 基础练习 特殊回文数
    lqb 基础练习 十进制转十六进制
    lqb 基础练习 十六进制转十进制
    lqb 基础练习 十六进制转八进制 (字符串进行进制转化)
    Git详细操作
  • 原文地址:https://www.cnblogs.com/Zhao159461/p/10510754.html
Copyright © 2011-2022 走看看