copy的用法

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)
    

posted on 2021-03-02 18:18  aot_m  阅读(438)  评论(0)    收藏  举报

导航