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])))
    # [:]的性质和浅拷贝一样
  • 相关阅读:
    flask强大的三方组件flask-Migrate
    FTP和HTTP
    MD5-JS加密
    使用websocket实现单聊和多聊
    Flask上下文管理
    python中的with用法
    如何判断一个对象是可调用对象
    缓存
    websocket与http
    csrf
  • 原文地址:https://www.cnblogs.com/fuyouqiang/p/11782561.html
Copyright © 2011-2022 走看看