python中copy和deepcopy有什麼差別?
copy僅拷貝對象本身,而不對中的子對象進行拷貝,故對子對象進行修改也會随着修改。
deepcopy是真正意義上的複制,即從新開辟一片空間。我們經常說的複制實際上就是deepcopy.
上代碼看看
import copy
a=[1,2,3,[2,3],4]
b=a
c=copy.copy(a)
d=copy.deepcopy(a)
a.append(9)
print(a) # [1, 2, 3, [2, 3], 4, 9]
print(b) # [1, 2, 3, [2, 3], 4, 9]
print(c) # [1, 2, 3, [2, 3], 4]
print(d) # [1, 2, 3, [2, 3], 4]
可以看出來,copy和deepcopy出來後,它跟原來沒有什麼關系了。但是看後面,如果對裡面的元素元素對象進行操作的話,看看什麼樣?
a[3][0]=8
print(a) # [1, 2, 3, [8, 3], 4, 9]
print(b) # [1, 2, 3, [8, 3], 4, 9]
print(c) # [1, 2, 3, [8, 3], 4]
print(d) # [1, 2, 3, [2, 3], 4]
可以看出來,deepycopy出來後,裡面的元素的對象,修改後,跟原來沒有關系了,但是copy還是沒有對裡面的對象進行複制,它隻是複制而已,copy也叫淺拷貝。
後記
學習python或者量化的,可以看看我網易雲課堂的視訊,搜尋51bitquant可以找到教程。個人微信:bitquant51