91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

深入了解Python中pop和remove的使用方法

發布時間:2020-10-16 00:59:19 來源:腳本之家 閱讀:256 作者:DebugMyself 欄目:開發技術

Python關于刪除list中的某個元素,一般有兩種方法,pop()和remove()。

remove() 函數用于移除列表中某個值的第一個匹配項。

remove()方法語法:

list.remove(obj)

pop() 函數用于移除列表中的一個元素(默認最后一個元素),并且返回該元素的值。

pop()方法語法:

list.pop(obj=list[-1])

如果刪除單個元素,使用基本沒有什么問題,具體如下。

1.pop()方法,傳遞的是待刪除元素的index:

x = ['a', 'b', 'c', 'd']
x.pop(2)
print x
 
------------------
result:
['a', 'b', 'd']

2. remove()傳遞待刪除元素,如果多個元素一樣,默認刪除第一個:

x = ['a', 'b', 'a', 'c', 'd']
x.remove('a')
print x
 
-----------------
result:
['b', 'a', 'c', 'd']

如果要循環刪除符合某個條件的元素,慎用!!

x = ['a', 'b', 'c', 'd']
y = ['b', 'c']
for i in x:
  if i in y:
    x.remove(i)
print x
 
-----------------------
result:
['a', 'c', 'd']
x = ['a', 'b', 'c', 'd']
y = ['b', 'c']
for i in x:
  if i in y:
    idx = x.index(i)
    x.pop(idx)
print x
 
--------------
result:
['a', 'c', 'd']

我認為出現這種情況的主要原因是,pop和remove方法屬于‘破壞性操作‘(ps:原諒我自創的定義),x.remove()后,內存中原來存放x的位置已經釋放,又重新申請了內存存放新的x。可以理解為x已經不是原來的x了,而for循環中傳遞的x還是原來x在內存中的位置,所以在x.remove(i)后,for循環找不到x了,后面的刪除即無法完成。為了完成循環刪除list元素的問題,我推薦用下面的方法。

  感謝也許小念舊 的提醒,原先的解釋是錯誤的,造成上述現象的原因是因為,Python中for i in list是用迭代器實現,內部隱藏了記錄當前迭代器的狀態,而remove方法刪除了當前元素后,迭代器自動指到下一個元素,原先的list在內存中的位置并未改變。用下面方法可以避免。

x = ['a', 'b', 'c', 'd']
y = ['b', 'c']
x_new = []
for i in x:
  if i not in y:
    x_new.append(i)
x = x_new
print x
 
----------------------
result:
['a', 'd']

同時, 可可可心一家 提出把for i in x:改成for i in x[:]:也可以實現,這是因為x[:]與x不是同一個list,相當與把x的內存拷貝到一塊新的內存,當對x做remove操作的時候,新的內存list并沒有受影響。

總結

以上就是本文關于深入了解Python中pop和remove的使用方法的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站:

Python入門之三角函數全解【收藏】》

簡單了解Python中的幾種函數

python正則表達式re之compile函數解析

如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

莲花县| 南昌市| 车致| 靖江市| 睢宁县| 本溪市| 阿克| 弥勒县| 洛宁县| 禹城市| 黑山县| 新宁县| 南投县| 淮滨县| 景宁| 浮山县| 潍坊市| 龙州县| 晋州市| 安庆市| 河南省| 西平县| 晋江市| 肥城市| 肥东县| 本溪市| 南木林县| 榆林市| 囊谦县| 南澳县| 星子县| 河曲县| 息烽县| 新郑市| 德令哈市| 海丰县| 永年县| 巴东县| 榆社县| 宜都市| 鄯善县|