深、淺拷貝deepcopy()和copy()

天涯海閣未走遠發表於2018-09-02

深拷貝和淺拷貝一開始真的讓人有點暈:但是看完這篇博文,應該就ok'了。

首先說‘=’:

=‘相當於賦值,b=a解釋成“變數b對變數a的一個引用”。所以他們都指向同一個地址

所以地址內的值改變,所有的引用都會一起變

然後剩下分為兩種情況:

1、元素都是相同深度級別

比如列表[1,2,3,4]

copy淺拷貝:複製值,但是指向不同地址

deepcopy深拷貝:複製值,指向不同地址。

對於兩者:原始值的改變不引起拷貝的改變

 

元素有不同的深度:

先看最外層值被複制,指向的地址都改變。改變原始變數值,深拷貝和淺拷貝最外層都不隨之改變

再看內層:a[4]

copy淺拷貝拷貝了更深一級別元素的引用,所以被引用部分的元素改變會引起拷貝隨之改變。

而deepcopy深拷貝不管級別都只是拷貝元素的值本身。

相關文章