[PYTHON] 深度解析copy.copy() 與 copy.deepcopy()
阿新 • • 發佈:2017-10-15
可見 deep 可視化 相同 nbsp 原理 .cn 指導 錯誤
在列表中,想要復制一個列表,可以使用copy()函數,在列表中,copy()函數與切片 [:] 功能相同
a=[0,1,[0,1]]
b=a.copy()
c=a[:]
-----print b,c-----
b=[0,1,[0,1]]
c=[0,1,[0,1]]
在copy module中,copy.copy()也具有相同的功能,但是copy module中還有一個與copy.copy()長的很像,但功能不同的函數,那就是copy.deepcopy()
這也就是今天的主角‘淺復制copy.copy()’ 與 ‘深復制copy.deepcopy()’
首先由一張圖 來比較copy module 與 列表中copy()函數有什麽區別
由此圖可見列表中copy() 不僅與 [:] 還與copy.copy()功能相同
可是copy module中的兩個函數 缺不相同 這是為什麽呢?
首先看‘淺復制copy.copy()’的原理
由PYTHON可視化過程可知,在‘淺復制’中,b並沒有把列表中的小列表存儲到一個新的地址中,而是與a公用一個地址,所以當a小列表中值無論怎麽改變,b與其相同。
再來看, ‘深復制copy.deepcopy()’的原理
由此圖可知,‘深復制‘的時候,b把列表中的小列表存儲橙一個新的地址,這事無論a的小列表的值怎麽變,卻不影響b的小列表。
感謝閱覽
還是一名學生,在文中很有可能出現錯誤的觀點或術語,請各位前輩批評與指導,謝謝!
[PYTHON] 深度解析copy.copy() 與 copy.deepcopy()