zoukankan      html  css  js  c++  java
  • python-浅拷贝、深拷贝实例以及讲解

    # 1、浅拷贝 与 深拷贝 列表
    import copy
    a = [11, 22]
    b = [33, 44]
    c = [a, b]
    d = c
    e = copy.copy(c) # 浅拷贝
    f = copy.deepcopy(c) # 深拷贝
    a.append([55])
    print(a, c, e, f)
    print('a的id是{}, b的id是{}'.format(id(a), id(b)))
    print('c的id是{}, c[0]的id是{}, c[1]的id是{}'.format(id(c), id(c[0]), id(c[1])))
    print('d的id是{}, d[0]的id是{}, d[1]的id是{}'.format(id(d), id(d[0]), id(d[1])))
    print('e的id是{}, e[0]的id是{}, e[1]的id是{}'.format(id(e), id(e[0]), id(e[1])))
    print('f的id是{}, f[0]的id是{}, f[1]的id是{}'.format(id(f), id(f[0]), id(f[1])))
    # 浅拷贝:只拷贝变量c 赋值给e 里面的变量a,b 不进行拷贝
    # 深拷贝: 拷贝变量c以及里面里面的a,b 赋值给 f

    # 2、浅拷贝 与 深拷贝 元组
    import copy
    a = (11, 22)
    b = (33, 44)
    c = (a, b)
    d = c
    e = copy.copy(c) # 浅拷贝
    f = copy.deepcopy(c) # 深拷贝
    print('a的id是{}, b的id是{}'.format(id(a), id(b)))
    print('c的id是{}, c[0]的id是{}, c[1]的id是{}'.format(id(c), id(c[0]), id(c[1])))
    print('d的id是{}, d[0]的id是{}, d[1]的id是{}'.format(id(d), id(d[0]), id(d[1])))
    print('e的id是{}, e[0]的id是{}, e[1]的id是{}'.format(id(e), id(e[0]), id(e[1])))
    print('f的id是{}, f[0]的id是{}, f[1]的id是{}'.format(id(f), id(f[0]), id(f[1])))
    # 因为元组是不可变类型,如果要是拷贝元组就是引用指向了


    # 3、浅拷贝 与 深拷贝 元组里面包含列表
    import copy
    a = [11, 22]
    b = [33, 44]
    c = (a, b)
    d = c
    e = copy.copy(c) # 浅拷贝
    f = copy.deepcopy(c) # 深拷贝
    print('a的id是{}, b的id是{}'.format(id(a), id(b)))
    print('c的id是{}, c[0]的id是{}, c[1]的id是{}'.format(id(c), id(c[0]), id(c[1])))
    print('d的id是{}, d[0]的id是{}, d[1]的id是{}'.format(id(d), id(d[0]), id(d[1])))
    print('e的id是{}, e[0]的id是{}, e[1]的id是{}'.format(id(e), id(e[0]), id(e[1])))
    print('f的id是{}, f[0]的id是{}, f[1]的id是{}'.format(id(f), id(f[0]), id(f[1])))
    # 拷贝拥有 不可变类型的数据为最顶层,那么浅拷贝就变成了引用指向,深拷贝还是深拷贝


    # 4、浅拷贝 与 深拷贝 切片c[:]
    a = [11, 22]
    b = [33, 44]
    c = [a, b]
    e = c[:]
    print('a的id是{}, b的id是{}'.format(id(a), id(b)))
    print('c的id是{}, c[0]的id是{}, c[1]的id是{}'.format(id(c), id(c[0]), id(c[1])))
    print('e的id是{}, e[0]的id是{}, e[1]的id是{}'.format(id(e), id(e[0]), id(e[1])))
    # [:]的性质和浅拷贝一样
  • 相关阅读:
    烂泥:mysql修改本地主机连接
    烂泥:ESXI开启SNMP服务
    烂泥:【解决】VMware Workstation中安装ESXI5.0双网卡问题
    JS-日历签到
    CSS-文本(中,英)
    js-无缝向上滚动
    js-键盘回车搜索enter
    小程序-初次进入小程序的授权问题(授权更新后的完整步骤)button主动授权
    字蛛(font-spider)-单独压缩字体(解决页面少有的特殊字体的字体包引用)
    js-利用插件qrcode.min.js,前端实时生成二维码
  • 原文地址:https://www.cnblogs.com/fuyouqiang/p/11782561.html
Copyright © 2011-2022 走看看