淺談Python 列表字典賦值的陷阱
今天在用python刷leetcode 3Sum problem時,調入到了一個大坑中,檢查半天并沒有任何邏輯錯誤,但輸出結果卻總是不對,最終通過調試發(fā)現原來python中l(wèi)ist和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 列表字典賦值的陷阱就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python confluent kafka客戶端配置kerberos認證流程詳解
這篇文章主要介紹了Python confluent kafka客戶端配置kerberos認證流程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-10-10

