• 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])))
    # [:]的性质和浅拷贝一样
  • 相关阅读:
    Android自定义之ScrollView下拉刷新
    android Viewpager取消预加载及Fragment方法的学习
    Android上下左右滑动,显示底层布局
    android权限大全
    android学习之VelocityTracker
    Android之自定义(上方标题随ViewPager手势慢慢滑动)
    Red Hat Enterprise Linux 7.5安装极点五笔
    Red Hat Enterprise Linux 7.5安装盘内容做本地YUM源
    RHEL7+Oracle11g笔记
    CentOS安装VNC方法
  • 原文地址:https://www.cnblogs.com/fuyouqiang/p/11782561.html
Copyright © 2020-2023  润新知