zoukankan      html  css  js  c++  java
  • python3-- =、浅拷贝、深拷贝

    1、赋值 =

    # alist = [10,20,[100,200]]
    # blist = alist
    # blist.append(30)
    # print('alist: ',alist,' ; id是: ',id(alist))
    # print('blist: ',blist,' ; id是: ',id(blist))
    结果:
    alist:  [10, 20, [100, 200], 30]  ; id是:  1722968
    blist:  [10, 20, [100, 200], 30]  ; id是:  1722968

    结论:alist随着blist变化了

    2、浅拷贝copy.copy()

    import copy
    alist = [10,20,[100,200]]
    blist = copy.copy(alist)#复制
    blist.append(30)
    print('alist: ',alist,' ; id是: ',id(alist))
    print('blist: ',blist,' ; id是: ',id(blist))
    结果:
    alist:  [10, 20, [100, 200]]  ; id是:  9734784
    blist:  [10, 20, [100, 200], 30]  ; id是:  9734944
    import copy
    alist = [10,20,[100,200]]
    blist = copy.copy(alist)#复制
    blist[-1].append(300)
    print('alist: ',alist,' ; id是: ',id(alist))
    print('blist: ',blist,' ; id是: ',id(blist))
    结果:
    alist:  [10, 20, [100, 200, 300]]  ; id是:  7834320
    blist:  [10, 20, [100, 200, 300]]  ; id是:  7833640

    结论:copy.copy()中, 父级列表完全独立拷贝,全新地址保存,子级列表是共用的,拷贝不彻底 

    3、深拷贝 copy.deepcopy()

    import copy
    alist = [10,20,[100,200]]
    blist = copy.deepcopy(alist)
    blist.append(30)
    blist.append(30)
    print('alist: ',alist,' ; id是: ',id(alist))
    print('blist: ',blist,' ; id是: ',id(blist))
    结果:
    alist:  [10, 20, [100, 200]]  ; id是:  16681640
    blist:  [10, 20, [100, 200], 30, 30]  ; id是:  16681000
    import copy
    alist = [10,20,[100,200]]
    blist = copy.deepcopy(alist)
    # blist.append(30)
    blist[-1].append(300)
    blist.append(30)
    print('alist: ',alist,' ; id是: ',id(alist))
    print('blist: ',blist,' ; id是: ',id(blist))
    结果:
    alist:  [10, 20, [100, 200]]  ; id是:  13929208
    blist:  [10, 20, [100, 200, 300], 30]  ; id是:  13928568

    结论:copy.deepcopy()是彻底的拷贝

  • 相关阅读:
    js 创建函数,传递三个参数,返回最大值
    JS 实现 计算1~任意数字之间的所有整数阶乘的和
    npm install
    如何在浏览器上安装 VueDevtools工具
    前端日历插件
    css隐藏元素的几种方法
    less和sass的区别
    vue.js 自定义事件
    vue简单的导航栏
    用jetty启动idea中的maven项目报错Caused by: java.lang.ClassNotFoundException: org.apache.jasper.runtime.JspApplicationContextImpl
  • 原文地址:https://www.cnblogs.com/guang2508/p/13138253.html
Copyright © 2011-2022 走看看