从 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 中,返回一个 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() 函数从列表中删除。