zoukankan      html  css  js  c++  java
  • 深浅copy

    深浅copy

    1. 赋值运算
      l1和l2指向同一个内存地址

      赋值运算

      l1 = [1, 2, 3, [4, 5, 6, 33]]

      l2 = l1

      l2.append(666)

      print(l1) #[1, 2, 3, [4, 5, 6, 33], 666]

      print(l2) # [1, 2, 3, [4, 5, 6, 33], 666]

    2. 浅copy

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

    #浅copy
    # l1 = [1, 2, 3, [4, 5, 6, 33]]
    # l2 = l1.copy()
    # l1.append(666)
    # print(l1)  #[1, 2, 3, [4, 5, 6, 33], 666]
    # print(l2)  #[1, 2, 3, [4, 5, 6, 33]]
    # print(id(l1)) #1392044476616
    # print(id(l2)) #1392044476744
    
    # l1 = [1, 2, 3, [4, 5, 6, 33]]
    # l2 = l1.copy()
    # l1[-1].append(666)
    # print(l1)   #[1, 2, 3, [4, 5, 6, 33, 666]]
    # print(l2)   #[1, 2, 3, [4, 5, 6, 33, 666]]
    
    1. 深copy

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

    #深copy
    import copy
    l1 = [1, 2, 3, [4, 5, 6, 33]]
    l1[-1].append(666)
    l2 = copy.deepcopy(l1)
    l1[-1].append(777)
    print(l1)   #[1, 2, 3, [4, 5, 6, 33, 666, 777]]
    print(l2)   #[1, 2, 3, [4, 5, 6, 33, 666]]
    

    相关面试题

    #面试题
    l1 = [1, 2, 3, 4, ['alex']]
    l2 = l1[::]
    l1[-1].append(666)
    print(l2)   #[1, 2, 3, 4, ['alex', 666]]
    

    浅copy:列表,字典嵌套的可变数据类型是同一个。

    深copy:列表,字典嵌套的可变数据类型不是同一个。

    切片属于浅copy

  • 相关阅读:
    常用的JS代码
    静态类相关
    并查集
    RMQ
    模考题line
    递归模考题 集合
    KMP
    快速幂
    读现代软件工程之构建之法的疑问
    实验二
  • 原文地址:https://www.cnblogs.com/940531gbh/p/11263851.html
Copyright © 2011-2022 走看看