日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

對于各種編程語言,深淺拷貝總可以讓初學者頭疼不已。而Python--這門十分受歡迎的語言也不例外。下面,分享下自己對Python深淺拷貝的理解。

  • 淺復制后,兩個變量同時變化
  • 深復制后,兩個變量獨立

單變量

在編程中,賦值“=”這個操作很常見,但是它底層的含義學問很大。稍有不注意,就給你找麻煩。賦值“=”類似于深復制。直接上code

>>> x = 10
>>> y = x
>>> x, y
10, 10
>>> x = 0
>>> print(x, y) 
0, 10

發現,y的值沒有變化?。?!也說明y = x 這個賦值操作并沒有實現把x的地址賦值給y,而是創造了一個引用。x,y的值是獨立的,不會相互影響。直接上圖助你理解引用。

淺談Python深淺拷貝

 

  • 10賦值給x,10的引用給了x
  • y=x,給10創造了一個引用別名
  • x=0,0的引用給了x,從而不會影響y的值

復雜數據結構,例如 List, Array

但對于復雜數據結構的賦值和單變量的不一樣,它是一種淺復制。直接上code

>>>ls1 = [0,1,2]
>>>ls2 = ls1
>>>ls1.Append(-1)
>>> ls1, ls2
[0,1,2,-1],[0,1,2,-1]

賦值后,兩個變量是同時改變的。這和單變量的不同。

可以這樣理解,對于復雜數據結構的賦值,其實是數據結構地址的賦值,即ls1和ls2共享了這個list的地址,都指向這個數據結構。所以,一個變化后,另一個也會變化。類比說明下,假設黃山市和徽州市(徽州更好聽)是同一個地方的名稱,都指向同一個地點?;罩菔袑崿F了小康,那黃山市肯定也是小康了。

深復制

那么,如何實現復雜數據結構的復制呢?使用Python的一個包:copy.

  • copy.copy() 實現淺復制
  • copy.deepcopy() 實現深復制
>>>import copy
>>> ls1 = [0,1,2]
>>>ls2 = copy.deepcopy(ls1)
>>>ls1.append(-1)
>>>ls1,ls2
([0, 1, 2, -1], [0, 1, 2])

分享到:
標簽:Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定