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

    #import copy
    #浅拷贝
    
    #copy.copy()
    
    #深拷贝
    #copy.deepcopy()
    
    #赋值
    #=
    #字符串和数字、copy在内存里用的是同一地址
    #对于 数字 和 字符串 而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址。
    import
    copy #字符串、数字 #a1 = 123123 #a2 = 123123 #a2 = a1 #print(id(a1)) #print(id(a2)) a1 = 'sadasdasdasdasd' a3 =copy.deepcopy(a1) print(id(a1)) print(id(a3))
    
    
    import copy
    
    #其它、元组、列表、字典......
    n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
    
    #赋值(id 一样)
    #n2 = n1
    #print(id(n1))
    #print(id(n2))

    #浅拷贝(id 不一样) n3 = copy.copy(n1) print(id(n1)) print(id(n3))
    #id一样
    print(id(n1['k3']))
    print(id(n3['k3']))

     

    深拷贝,在内存中将所有的数据重新创建一份(排除最后一层,即:python内部对字符串和数字的优化)

    import copy
    
    #其它、元组、列表、字典......
    n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
    
    #赋值(id 一样)
    #n2 = n1
    #print(id(n1))
    #print(id(n2))
    
    #浅拷贝(id 不一样)
    #n3 = copy.copy(n1)
    n3 = copy.deepcopy(n1)
    print(id(n1))
    print(id(n3))
    #id一样
    print(id(n1['k3']))
    print(id(n3['k3']))

    输出:

    35099032
    35099272
    35583160
    35535848



    例:
    import
    copy dic = { "cpu":[80,], 'mem':[80,], 'disk':[80,] } print('brefor',dic) new_dic = copy.deepcopy(dic) new_dic['cpu'][0] = 50 print(dic) print(new_dic)

    输出:

    brefor {'cpu': [80], 'mem': [80], 'disk': [80]}
    {'cpu': [80], 'mem': [80], 'disk': [80]}
    {'cpu': [50], 'mem': [80], 'disk': [80]}

  • 相关阅读:
    GJM : Unity的profiler性能分析【转载】
    GJM :Unity UI 之 UGUI 开发
    GJM:笔记记录
    GJM : UGUI 缩放循环拖动展示卡牌效果
    GJM :HTC Vive VRTK.Package 踩坑之路(一)
    GJM :Mono 介绍
    GJM :Unity3D 介绍
    GJM : C# 介绍
    GJM : 通用类型系统(Common Type System CTS)
    GJM :SQL Server中常用的SQL语句
  • 原文地址:https://www.cnblogs.com/mrzuo/p/7116907.html
Copyright © 2011-2022 走看看