今天在用python刷leetcode 3Sum problem時,調入到了一個大坑中,檢查半天并沒有任何邏輯錯誤,但輸出結果卻總是不對,最終通過調試發現原來python中list和dict類型直接賦值竟然是淺拷貝!!!因此,在實際實驗中,若要實現深拷貝,建立新list或dict,使新建的list或dict變量和以前的變量只是具有相同的值,但是卻具有不同的存儲地址,保證在改變以前的list變量的時候,不會對新的list產生任何影響。
python中的深拷貝的實現需要通過copy.deepcopy函數來實現。
具體操作如下:
# python>>> from copy import deepcopy
- 關于dict的深淺拷貝實驗示例
>>> a=dict() #建立字典>>> a['e1']=1 #添加字典元素>>> a['e2']=2>>> a #查看字典內容,輸出如下{'e1': 1, 'e2': 2}>>> b=a #淺拷貝>>> c=deepcopy(a) #深拷貝>>> a['e1']=3 #改變字典的內容,觀察深淺拷貝變量的變化>>> a{'e1': 3, 'e2': 2}>>> b{'e1': 3, 'e2': 2}>>> c{'e1': 1, 'e2': 2}- 關于list的深淺拷貝實驗示例
>>> a=[1, 2, 2, 3] >>> b=deepcopy(a)>>> c=a>>> a.remove(2) #去掉列表a中的2,注意一次remove只去掉一個元素>>> a[1, 2, 3]>>> b[1, 2, 2, 3] >>> c[1, 2, 3]
以上這篇淺談Python 列表字典賦值的陷阱就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答