zoukankan      html  css  js  c++  java
  • python浅拷贝和深拷贝

    python中的数据类型分为可变类型(list,dict)和不可变类型(string,tuple,int)

    不可变类型不存在深浅拷贝

    可变类型的

    浅拷贝:不管是多么复杂的数据结构,浅拷贝只会拷贝第一层(拷贝的时引用)

    import copy
    list_1 = [1,2,['a','b','c'],3]
    list_2 = copy.copy(list_1)
    list_1[2][1] = 'kk'
    print(list_1,list_2,id(list_1[2]),id(list_2[2]))
    
    结果:
    [1, 2, ['a', 'kk', 'c'], 3] [1, 2, ['a', 'kk', 'c'], 3] 1798791797576 1798791797576

    深拷贝: 深拷贝会完全复制原变量的所有数据,在内存中生成一套完全一样的内容,我们对这两个变量中的一个进行任意修改都不会影响另一个变量(递归形式的拷贝)

    import copy
    list_1 = [1,2,['a','b','c'],3]
    list_2 = copy.deepcopy(list_1)
    list_1[2][1] = 'kk'
    print(list_1,list_2,id(list_1[2]),id(list_2[2]))
    
    结果:
    [1, 2, ['a', 'kk', 'c'], 3] [1, 2, ['a', 'b', 'c'], 3] 1582641879944 1582641878152

    总结:copy和deepcopy和赋值是等价的

  • 相关阅读:
    mysql总结
    git总结
    转:如何判断一家公司的好坏
    路越走越窄,尤其做技术的
    百度面试总结
    背叛
    which和whereis 命令
    bzoj3263 陌上花开 CDQ模板
    bzoj 2653middle
    暑假第十九测
  • 原文地址:https://www.cnblogs.com/xcsg/p/10466284.html
Copyright © 2011-2022 走看看