深浅copy

Posted jiajin-wu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深浅copy相关的知识,希望对你有一定的参考价值。

深浅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的主要内容,如果未能解决你的问题,请参考以下文章

小数据池 深浅copy 集合

python集合深浅copy

python 06 id is == set 深浅copy

Python深浅copy

Python之深浅copy

python之数据类型补充集合深浅copy