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])))
    # [:]的性质和浅拷贝一样
  • 相关阅读:
    Codeforces Round #251 (Div. 2) A
    topcoder SRM 623 DIV2 CatAndRat
    topcoder SRM 623 DIV2 CatchTheBeatEasy
    topcoder SRM 622 DIV2 FibonacciDiv2
    topcoder SRM 622 DIV2 BoxesDiv2
    Leetcode Linked List Cycle II
    leetcode Linked List Cycle
    Leetcode Search Insert Position
    关于vim插件
    Codeforces Round #248 (Div. 2) B. Kuriyama Mirai's Stones
  • 原文地址:https://www.cnblogs.com/fuyouqiang/p/11782561.html
Copyright © 2011-2022 走看看