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

深浅copy

时间:2019-11-12 01:12:48      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:import   family   port   scores   int   deepcopy   数据   内存   比较   

深浅copy

在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必须是独立的了。

 

 

深浅copy

标签:import   family   port   scores   int   deepcopy   数据   内存   比较   

原文地址:https://www.cnblogs.com/jiajin-wu/p/11839134.html

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