Python3之淺談----深拷貝與淺拷貝
淺拷貝
淺拷貝指在賦值過程中,只複製一層變數,不會複製深層變數繫結的物件的複製過程
例項:
>>> L = [3.1,3.2]
>>> L1 = [1,2,L]
>>> L2 = L1.copy()
>>> L1
[1, 2, [3.1, 3.2]]
>>> L2
[1, 2, [3.1, 3.2]]
>>> L2[1] = 3
>>> L1
[1, 2, [3.1, 3.2]]
>>> L2
[1, 3, [3.1, 3.2]]
>>> L2[2][0] = 3.14
>>> L1
[1, 2, [3.14, 3.2]]
>>> L2
[1, 3, [3.14, 3.2]]
>>> L[1] = 1111
>>> L1
[1, 2, [3.14, 1111]]
>>> L2
[1, 3, [3.14, 1111]]
>>>
深拷貝
複製物件及關聯的物件一起復制的過程叫深拷貝
例項:
>>> import copy
>>> L = [3.1,3.2]
>>> L1 = [1,2,L]
>>> L2 = copy.deepcopy(L1)
>>> L1
[1, 2, [3.1, 3.2]]
>>> L2
[1, 2, [3.1, 3.2]]
>>> L2[2][0] = 3.14
>>> L1
[1, 2, [3.1, 3.2]]
>>> L2
[1, 2, [3.14, 3.2]]
>>> L[1] = 222222
>>> L1
[1, 2, [3.1, 222222]]
>>> L2
[1, 2, [3.14, 3.2]]
淺拷貝 vs 深拷貝
說大白話:
淺拷貝雖然說是拷貝,但也是 “ 身不由己 ” ,當改除了一層之外的值時,都會改動(這時不管是不是拷貝的,都改,看淺拷貝的栗子就知道了吧,內嵌列表表面上也拷貝過來了,但實際還是不是自己說了算的,只要改了內嵌列表的值,拷貝的也要改,這就是隻拷貝一層,內嵌的就無能為力了)
深拷貝就是徹底的拷貝,兩者就再毫無關係,雖然拷貝完不改的話長的一樣,但是不管對誰改動,另一個也是毫不受影響,詳細看深拷貝。
本節完
相關文章
- 淺談深拷貝與淺拷貝?深拷貝幾種方法。
- React之淺拷貝與深拷貝React
- 深入淺出深拷貝與淺拷貝
- JS深拷貝與淺拷貝JS
- IOS學習之淺析深拷貝與淺拷貝iOS
- 淺談Java中的淺拷貝和深拷貝Java
- 深入淺出的“深拷貝與淺拷貝”
- JavaScript之深拷貝和淺拷貝JavaScript
- js之淺拷貝和深拷貝JS
- 深拷貝、淺拷貝與Cloneable介面
- 賦值、淺拷貝與深拷貝賦值
- Python淺拷貝與深拷貝Python
- python深拷貝與淺拷貝Python
- 物件的深拷貝與淺拷貝物件
- 【c++】淺拷貝與深拷貝C++
- vue深拷貝淺拷貝Vue
- [JS系列二]談談深拷貝和淺拷貝,如何實現深拷貝JS
- 淺探js深拷貝和淺拷貝JS
- JavaScript中的淺拷貝與深拷貝JavaScript
- 淺拷貝與深拷貝的實現
- 【JavaScript】物件的淺拷貝與深拷貝JavaScript物件
- 淺拷貝與深拷貝程式碼(javascript)JavaScript
- iOS深拷貝和淺拷貝iOS
- Java深拷貝和淺拷貝Java
- 物件深拷貝和淺拷貝物件
- javascript 淺拷貝VS深拷貝JavaScript
- JavaScript深拷貝和淺拷貝JavaScript
- js 淺拷貝和深拷貝JS
- js 深拷貝和淺拷貝JS
- JavaScript淺拷貝和深拷貝JavaScript
- js深拷貝和淺拷貝JS
- js 深拷貝 vs 淺拷貝JS
- java深克隆(深拷貝)和淺克隆(淺拷貝)Java
- jquery之物件拷貝深拷貝淺拷貝案例講解jQuery物件
- 談談我對深拷貝和淺拷貝的理解
- 【JS】深拷貝與淺拷貝,實現深拷貝的幾種方法JS
- 理解JS中的淺拷貝與深拷貝JS
- 圖解 Python 淺拷貝與深拷貝圖解Python