從 Python 列表中刪除某元素的所有出現

  1. 在 Python 中使用 filter() 函式從列表中刪除一個元素的所有例項
  2. 在 Python 中使用列表推導式從列表中刪除元素的所有例項
  3. 使用 remove() 函式從 Python 中刪除一個元素的所有例項

在 Python 中,列表允許同一個元素多次出現。即使一個元素的值可能與其他元素相同,但每個元素都會有一個不同的索引。使用這些索引號,你可以很容易地訪問任何你想要的元素。

但是,在某些情況下,你可能不想要同一元素的多個例項;那麼,你肯定會想要從列表中刪除所有這些特定元素的出現。在 Python 中,有不同的方法可以實現這一點。

在 Python 中使用 filter() 函式從列表中刪除一個元素的所有例項

在 Python 中,藉助於 filter() 函式,過濾元素變得更加容易。filter() 函式需要兩個引數,第一個引數是一個函式,第二個引數可以是集合、列表、元組等。

示例 1:帶有 __ne__filter() 函式

myList = [2, 1, 3, 5, 1, 1, 1, 0]
myList = list(filter((1).__ne__, myList))
print(myList)

輸出:

[2, 3, 5, 0]

在這個例子中,你有一個列表 myList,你想從中刪除所有出現的 1filter() 函式接受另一個函式 __ne__,它將根據 1 是否存在於列表 myList 中,返回一個 TrueFalse 的布林值。如果值 1 存在於列表中,那麼它將直接丟棄它。然後,無論 filter() 函式返回的是什麼,都將使用 list() 函式將其轉換為一個列表。

示例 2:帶有 lambda 函式的 filter() 函式

myList = [2, 1, 3, 5, 1, 1, 1, 0]
valueToBeRemoved = 1

result = filter(lambda val: val !=  valueToBeRemoved, myList) 
print(list(result)) 

輸出:

[2, 3, 5, 0]

我們沒有傳遞 __ne__ 函式,而是傳遞一個 lambda 函式給 filter() 函式。

從列表 myList 中,你將逐個提取每個元素並將其儲存在 val 變數中。如果存在於 valvalueToBeRemoved 中的元素不相等,只有那些存在於 val 中的元素會被新增到新的變數 result 中。你應該使用 list() 函式將 result 轉換為一個列表。

在 Python 中使用列表推導式從列表中刪除元素的所有例項

列表推導式是一種簡短的程式碼編寫方式。列表理解法比一般的函式和迴圈快。

示例程式碼:

myList = [1, 2, 3, 4, 2, 2, 3]
valueToBeRemoved = 2

myList = [value for value in myList if value != valueToBeRemoved]

print(myList)

輸出:

[1, 3, 4, 3]

你有一個列表 myList,你想從其中刪除元素 2 的出現。刪除一個元素的所有例項的主要程式碼位於方括號 [] 內。這裡,for 迴圈將首先執行,然後它將從列表 myList 中獲取一個值並將其儲存在 value 變數中。之後,如果 value 變數裡面的值和 valueToBeRemoved 變數不匹配,它就只會返回 value 變數的值,並將其儲存在列表 myList 中。這個過程將一直持續到列表變空。最後,你將擁有一個包含你想要的輸出的列表。

使用 remove() 函式從 Python 中刪除一個元素的所有例項

remove() 函式只刪除元素的第一次出現。如果你想使用 remove() 函式刪除元素的所有出現,你可以使用 for 迴圈或 while 迴圈。

myList = [2, 1, 3, 5, 1, 1, 1, 0]
valueToBeRemoved = 1
 
try:
    while True:
        myList.remove(valueToBeRemoved)
except ValueError:
    pass
 
print(myList)

輸出:

[2, 3, 5, 0]

在上面的程式碼中,你建立了一個列表 myList,然後你有一個變數 valueToBeRemoved,它將包含你想從列表中刪除的元素,在這個例子中 1。當迴圈瀏覽列表時,如果該元素在列表中,將使用 remove() 函式從列表中刪除。

相關文章 - Python List

  • 在 Python 中宣告 3D 陣列
  • 如何用 Python 將列表寫入檔案