zoukankan      html  css  js  c++  java
  • 4.深拷贝和浅拷贝

    #深拷贝
    
    #浅拷贝
    #(1)等号
    # list1 = [11,22,33,['a','b']]
    # list2 = list1
    # list1.append(44)
    # print(list1,list2,id(list1),id(list2))
    # [11, 22, 33, ['a', 'b'], 44] [11, 22, 33, ['a', 'b'], 44] 43425416 43425416
    
    #(2)浅拷贝 copy
    # import copy
    # c = [11,22,33,['a','b']]
    # d = copy.copy(c)
    # c.append(44)
    # c[3].append('c')
    # print(c,d,id(c),id(d))
    # #[11, 22, 33, ['a', 'b', 'c']] [11, 22, 33, ['a', 'b']] 43803848 43800456
    # print(id(c[3]),id(d[3]))
    # #43738248 43738248
    
    # #深拷贝 deepcopy
    import copy
    c = [11,22,33,['a','b']]
    d = copy.deepcopy(c)#
    c.append(44)
    c[3].append('c')
    print(c,d,id(c),id(d))
    #[11, 22, 33, ['a', 'b', 'c'], 44] [11, 22, 33, ['a', 'b']] 43931272 43933640
    print(id(c[3]),id(d[3]))
    #43929800 43931464
    '''
    等号:属于浅拷贝,不改变id地址,所以改变一个变量另外一个变量也会改变
    浅拷贝:第一层数据的id号会改变,单数数据里面的id号不会改变,所以一个变量改变,另外一个变量不会改变,
    但是第一个变量的更深的数据改变时,另外一个变量对应的数据会改变吧
    深拷贝deepcopy:会改变id号,包括元素里面的元素的id号,所以一个变量改变,另外一个变量不会改变(所有数据)
    '''
  • 相关阅读:
    算法导论
    深度探索C++对象模型
    git 介绍及其使用总结
    前端跨域常见的几种方式
    前端面试angular 常问问题总结
    低版本浏览器支持HTML5标签的方法
    理解 angular 的路由功能
    Angular 新手容易碰到的坑
    Angular 新手容易碰到的坑
    一 Unicode和UTF-8的异同
  • 原文地址:https://www.cnblogs.com/zhangboblogs/p/8634612.html
Copyright © 2011-2022 走看看