标签:import family port scores int deepcopy 数据 内存 比较
在dict、list、set中
s = {name:alex....}
s2 = s,此时s2和s是共享同一份数据的
copy一份新数据
浅copy
1 data = { 2 "name":"alex", 3 "age":18, 4 "scores":{ 5 "语文":130, 6 "数学":60, 7 "英语":98, 8 } 9 } 10 11 d2 = data.copy() 12 data["age"] = 20 13 print(d2) 14 print(data) 15 16 >>> 17 d2 = {‘name‘: ‘alex‘, ‘age‘: 18, ‘scores‘: {‘语文‘: 130, ‘数学‘: 60, ‘英语‘: 98}} 18 data = {‘name‘: ‘alex‘, ‘age‘: 20, ‘scores‘: {‘语文‘: 130, ‘数学‘: 60, ‘英语‘: 98}}
1 data = { 2 "name":"alex", 3 "age":18, 4 "scores":{ 5 "语文":130, 6 "数学":60, 7 "英语":98, 8 } 9 } 10 d2 = data.copy() 11 data["age"] = 20 12 data["scores"]["数学"] = 77 13 print(d2) 14 print(data) 15 16 >>> 17 d2 = {‘name‘: ‘alex‘, ‘age‘: 18, ‘scores‘: {‘语文‘: 130, ‘数学‘: 77, ‘英语‘: 98}} 18 d = {‘name‘: ‘alex‘, ‘age‘: 20, ‘scores‘: {‘语文‘: 130, ‘数学‘: 77, ‘英语‘: 98}} #看输出 , 很神奇,两个Dict里age的值是独立的,但score字典里的分数值貌似是共享的
相当于浅copy仅copy内层字典的内存地址,对于内存地址这个杯子内放的什么,数据还是统一的,不是单独copy过来
深copy
1 import copy 2 data = { 3 "name":"alex", 4 "age":18, 5 "scores":{ 6 "语文":130, 7 "数学":60, 8 "英语":98, 9 } 10 } 11 12 d3 = copy.deepcopy(data) 13 d3["scores"]["语文"] = 149 14 15 print(d3) 16 print(data) 17 18 >>深copy就是得到完全独立的数据,但是平常用的比较少
最后,这东西有什么用呢? 坦白讲,以后开发中多数情况下你用不到,但是你有要知道有这个知识点,说不定哪天有个需求就要求你必须确保你的2个复制出来的dict,list必须是独立的了。
标签:import family port scores int deepcopy 数据 内存 比较
原文地址:https://www.cnblogs.com/jiajin-wu/p/11839134.html