从 Python 列表中删除某元素的所有出现

Sahil Bhosale 2023年1月30日 2021年2月28日
  1. 在 Python 中使用 filter() 函数从列表中删除一个元素的所有实例
  2. 在 Python 中使用列表推导式从列表中删除元素的所有实例
  3. 使用 remove() 函数从 Python 中删除一个元素的所有实例
从 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() 函数从列表中删除。

Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn

相关文章 - Python List