码迷,mamicode.com
首页 > 其他好文 > 详细

copy的用法

时间:2021-03-03 12:09:08      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:imp   格式   pre   epc   原函数   deepcopy   core   改变   ict   

copy的用法

copy分为深copy和浅copy

1 浅copy

示例

data = {
    "name":"alex",
    "age":18,
    "scores":{
        "语文":130,
        "数学":60,
        "英语":98,
    }
}
d2 = data.copy()
data["age"] = 20
data["scores"]["数学"] = 77  
print(d2)
print(data)

输出

{‘name‘: ‘alex‘, ‘age‘: 18, ‘scores‘: {‘语文‘: 130, ‘数学‘: 77, ‘英语‘: 98}}
{‘name‘: ‘alex‘, ‘age‘: 20, ‘scores‘: {‘语文‘: 130, ‘数学‘: 77, ‘英语‘: 98}}

分析发现

  • d2(复制项)输出age与原函数相等,并没有执行 data["age"] = 20
  • d2(复制项)与data(原项)均输出 ‘数学‘: 77 ,表明均执行 data["scores"]["数学"] = 77

原因

? .copy()只复制了"scores"以上部分,在"scores"里仍与原函数相同(同改变)

结论

? 浅copy会仅复制dict的第一层数据,更深层的scores下面的值依然是共享一份

2 深copy

示例

import copy
data = {
    "name":"alex",
    "age":18,
    "scores":{
        "语文":130,
        "数学":60,
        "英语":98,
    }
}
d2 = copy.deepcopy(data)
data["age"] = 20
data["scores"]["数学"] = 77  
print(d2)
print(data)

输出

{‘name‘: ‘alex‘, ‘age‘: 18, ‘scores‘: {‘语文‘: 130, ‘数学‘: 60, ‘英语‘: 98}}
{‘name‘: ‘alex‘, ‘age‘: 20, ‘scores‘: {‘语文‘: 130, ‘数学‘: 77, ‘英语‘: 98}}

结论

  • 深copy需要调用copy类

  • 深copy可以复制所有的数据

  • 调用格式

    import copy
    
    d2 = copy.deepcopy(data)
    

copy的用法

标签:imp   格式   pre   epc   原函数   deepcopy   core   改变   ict   

原文地址:https://www.cnblogs.com/aotaot/p/14470511.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!