從 Python 列表中刪除某元素的所有出現
-
在 Python 中使用
filter()
函式從列表中刪除一個元素的所有例項 - 在 Python 中使用列表推導式從列表中刪除元素的所有例項
-
使用
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
,你想從中刪除所有出現的 1
。filter()
函式接受另一個函式 __ne__
,它將根據 1
是否存在於列表 myList
中,返回一個 True
或 False
的布林值。如果值 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
變數中。如果存在於 val
和 valueToBeRemoved
中的元素不相等,只有那些存在於 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()
函式從列表中刪除。