Java教程

深浅

本文主要是介绍深浅,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

浅copy

例子1:

 1 data = {
 2     "name":"alex",
 3     "age":18,
 4     "scores":{
 5         "语文":130,
 6         "数学":60,
 7         "英语":98,
 8     }
 9 }
10 d2 = data
11 data["age"] = 20 
12 print(d2)

执行结果:

{'name': 'alex', 'age': 20, 'scores': {'语文': 130, '数学': 60, '英语': 98}}

d2=data相当于只是拿到了data的内存地址,但data里的每个k,v都是有单独的内存地址的。所以d2和data会一直共享这个字典里的数据,不会出现像字符串a=1,b=a, a=2, b依然等于1的情况。

例子2:

 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)

执行结果:

{'name': 'alex', 'age': 18, 'scores': {'语文': 130, '数学': 77, '英语': 98}}

{'name': 'alex', 'age': 20, 'scores': {'语文': 130, '数学': 77, '英语': 98}}

注意!浅copy会仅复制dict的第一层数据,更深层的scores下面的值依然是共享一份

深copy

例子1:

 

 1 from copy import deepcopy
 2 data = {
 3     "name":"alex",
 4     "age":18,
 5     "scores":{
 6         "语文":130,
 7         "数学":60,
 8         "英语":98,
 9     }
10 }
11 d2 = data.copy()
12 d3 = deepcopy(data)
13 
14 data["age"] = 20
15 
16 data["scores"]["数学"] = 77  
17 print(d3)
18 print(data)

执行结果:

{'name': 'alex', 'age': 18, 'scores': {'语文': 130, '数学': 60, '英语': 98}}
{'name': 'alex', 'age': 18, 'scores': {'语文': 130, '数学': 77, '英语': 98}}

d3 和 data这2个dict完全独立,无论有多少层数据。

这篇关于深浅的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!