• 深浅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

  • 相关阅读:
    WPF Style和Template
    WPF自定义命令
    Vue-cli proxyTable 解决开发环境的跨域问题
    mongoose 获取某个存在的collecion 里的数据
    express+mongodb+mongoose简单入门
    服务器环境配置nginx / php / php-fpm(一)
    vue 循环前十条数据
    nodejs express的基本用法
    nodejs querystring
    nodejs fs.readFile
  • 原文地址:https://www.cnblogs.com/940531gbh/p/11263851.html
Copyright © 2020-2023  润新知