深淺copy

深淺copy

在dict、list、set中spa

s = {name:alex....}code

s2 = s,此時s2和s是共享同一份數據blog

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必須是獨立的了。
相關文章
相關標籤/搜索