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)
浙公网安备 33010602011771号