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])))
    # [:]的性质和浅拷贝一样
  • 相关阅读:
    Java web学习总结
    java web知识点
    SSH进阶之路
    file /etc/httpd/conf.d/php.conf from install of php-5.6.37-1.el7.remi.x86_64 conflicts with file from package mod_php71w-7.1.18-1.w7.x86_64
    centos7上安装php5.6
    centos7 删除php
    centos7删除yum安装的php
    给服务器加内存
    Hyperledger Fabric 开发环境搭建 centos7系统
    79
  • 原文地址:https://www.cnblogs.com/fuyouqiang/p/11782561.html
Copyright © 2011-2022 走看看