欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2018年01月09日 14:15:30   作者:DebugMyself  
這篇文章主要介紹了深入了解Python中pop和remove的使用方法,具有一定借鑒價值,需要的朋友可以參考下

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

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

remove()方法語法:

list.remove(obj)

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

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']

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

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']

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

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

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[:]:也可以實現(xiàn),這是因為x[:]與x不是同一個list,相當與把x的內(nèi)存拷貝到一塊新的內(nèi)存,當對x做remove操作的時候,新的內(nèi)存list并沒有受影響。

總結

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

Python入門之三角函數(shù)全解【收藏】》

簡單了解Python中的幾種函數(shù)

python正則表達式re之compile函數(shù)解析

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

相關文章

  • ubuntu 16.04下python版本切換的方法

    ubuntu 16.04下python版本切換的方法

    這篇文章主要為大家詳細介紹了ubuntu 16.04下python版本切換的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • python輸出pdf文檔的實例

    python輸出pdf文檔的實例

    今天小編就為大家分享一篇python輸出pdf文檔的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 利用Python中的mock庫對Python代碼進行模擬測試

    利用Python中的mock庫對Python代碼進行模擬測試

    這篇文章主要介紹了利用Python中的mock庫對Python代碼進行模擬測試,mock庫自從Python3.3依賴成為了Python的內(nèi)置庫,本文也等于介紹了該庫的用法,需要的朋友可以參考下
    2015-04-04
  • Python Gitlab Api 使用方法

    Python Gitlab Api 使用方法

    今天小編就為大家分享一篇Python Gitlab Api 使用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python3 io文本及原始流I/O工具用法詳解

    Python3 io文本及原始流I/O工具用法詳解

    這篇文章主要介紹了Python3 io文本及原始流I/O工具用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • Python中使用sklearn進行特征降維的方法

    Python中使用sklearn進行特征降維的方法

    在Python中,可以使用sklearn庫中的特征降維方法對數(shù)據(jù)進行處理。主要包括基于PCA算法的降維、基于LDA算法的降維、以及利用特征選擇方法進行降維。這些方法可以提高模型的訓練效率和預測準確率,特別是在高維數(shù)據(jù)集中具有重要的作用
    2023-04-04
  • 詳解Python枚舉的定義與用法

    詳解Python枚舉的定義與用法

    這篇文章主要介紹了詳解Python枚舉的定義與用法,在Python中,枚舉和我們在對象中定義的類變量時一樣的,每一個類變量就是一個枚舉項,需要的朋友可以參考下
    2023-04-04
  • k-means 聚類算法與Python實現(xiàn)代碼

    k-means 聚類算法與Python實現(xiàn)代碼

    這篇文章主要介紹了k-means 聚類算法與Python實現(xiàn)代碼,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • 基于DataFrame篩選數(shù)據(jù)與loc的用法詳解

    基于DataFrame篩選數(shù)據(jù)與loc的用法詳解

    今天小編就為大家分享一篇基于DataFrame篩選數(shù)據(jù)與loc的用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python tensorflow實現(xiàn)mnist手寫數(shù)字識別示例【非卷積與卷積實現(xiàn)】

    Python tensorflow實現(xiàn)mnist手寫數(shù)字識別示例【非卷積與卷積實現(xiàn)】

    這篇文章主要介紹了Python tensorflow實現(xiàn)mnist手寫數(shù)字識別,結合實例形式分析了基于tensorflow模塊使用非卷積與卷積算法實現(xiàn)手寫數(shù)字識別的具體操作技巧,需要的朋友可以參考下
    2019-12-12

最新評論