Python List .remove()——如何从 Python 列表中删除项目

在这篇文章中,你将学习如何使用 Python 内置的 remove() 列表方法。

到最后,你将知道如何使用 remove() 从 Python 的列表中删除一个项目。

下面是我们要讲的内容:

  • remove() 方法的语法
  • 使用 remove() 从一个列表中删除一个元素
  • remove() 只删除一个项目的第一次出现的实例
  • 如何删除一个项目的所有出现的实例

remove() 方法语法概述

remove() 方法是你在 Python 中从列表中删除元素的方法之一。

remove() 方法是通过它的而不是索引号从列表中删除一个项目。

remove() 方法的一般语法是这样的:

list_name.remove(value)

让我们把它分解一下:

  • list_name 是你正在处理的列表的名称
  • remove() 是 Python 内置的列表方法之一
  • remove() 需要一个必要的参数,如果你没有提供这个参数,你会得到一个 TypeError – 具体来说,你会得到一个 TypeError: list.remove() takes exactly one argument (0 given) 错误
  • value 是你想从 list_name 中删除的项目的具体数值

remove() 方法并不返回被删除的值,而只是返回 None,即没有返回值。

如果你需要通过索引号来删除一个项目,并且/或者由于某种原因你想返回(保存)你所删除的值,请使用 pop() 方法来代替。

如何在 Python 中使用 remove() 方法从列表中删除一个元素

要使用 remove() 方法从列表中删除一个元素,需要指定该元素的值并将其作为参数传递给该方法。

remove() 将在列表中搜索到它并将其删除。

#原始列表
programming_languages = ["JavaScript", "Python", "Java", "C++"]

#打印原始列表
print(programming_languages)

#从列表中删除值 “JavaScript”
programming_languages.remove("JavaScript")

#打印更新的列表
print(programming_languages)

#输出
#['JavaScript', 'Python', 'Java', 'C++']
#['Python', 'Java', 'C++']

如果你指定了一个不包含在列表中的值,那么你会得到一个错误_具体来说,这个错误将是 ValueError

programming_languages = ["JavaScript", "Python", "Java", "C++"]

#我想删除值 “React”
programming_languages.remove("React")

#打印列表
print(programming_languages)

#输出

# line 5, in <module>
#programming_languages.remove("React")
#ValueError: list.remove(x): x not in list

为了避免这种错误的发生,你可以首先使用 in 关键字来检查你想删除的值是否在列表中。

它将返回一个布尔值——如果该项目在列表中,则为 True,如果该值不在列表中,则为 False

programming_languages = ["JavaScript", "Python", "Java", "C++"]

#检查 “React” 是否在 “programming_languages” 列表中
print("React" in programming_languages)

#输出
#False

另一个避免这个错误的方法是创建一个条件,基本上是说:“如果这个值是列表的一部分,那么就删除它。如果它不存在,那就显示一条信息,说它不在列表中”。

programming_languages = ["JavaScript", "Python", "Java", "C++"]

if "React" in programming_languages:
    programming_languages.remove("React")
else:
    print("This value does not exist")
    
#输出
#This value does not exist

现在,当你试图删除某个不存在的值时,不是得到一个 Python 错误,而是得到一个返回的消息,说你想删除的项目不在你所处理的列表中。

remove() 方法删除列表中一个项目第一次出现的实例

在使用 remove() 方法时需要注意的是,它将搜索并只删除一个项目的第一个实例。

这意味着如果在列表中存在不止一个项目的实例,而你将其值作为参数传递给该方法,那么只有第一个实例会被删除。

让我们看一下下面的例子:

programming_languages = ["JavaScript", "Python", "Java", "Python", "C++", "Python"]

programming_languages.remove("Python")

print(programming_languages)

#输出
#['JavaScript', 'Java', 'Python', 'C++', 'Python']

在上面的例子中,值为 Python 的项目在列表中出现了三次。

当 remove() 被使用时,只有第一个匹配的实例被移除——在 JavaScript 值后面和 Java 值前面的那个。

其他两个 Python 仍然在列表中。

但是当你想删除一个项目的所有实例时,会发生什么?

单独使用 remove() 并不能达到这个目的,而且你可能不想只删除你指定的项目的第一个实例。

如何在 Python 中删除列表中一个项目的所有实例

删除列表中某一项目的所有实例的方法之一是使用列表理解法。

列表理解从一个现有的列表中创建一个新的列表,或者创建一个所谓的子列表。

这不会修改你的原始列表,而是创建一个满足你设定的条件的新列表。

#原始列表
programming_languages = ["JavaScript", "Python", "Java", "Python", "C++", "Python"]

#用列表理解创建的子数组
programming_languages_updated = [value for value in programming_languages if value != "Python"]


#打印原始数组
print(programming_languages)

#打印不包含 “Python” 的新的子数组
print(programming_languages_updated)

#输出

#['JavaScript', 'Python', 'Java', 'Python', 'C++', 'Python']
#['JavaScript', 'Java', 'C++']

在上面的例子中,有一个原始的 programming_languages 列表。

然后,一个新的列表(或子列表)被返回。

子列表中的项目必须满足一个条件。这个条件是,如果原始列表中的一个项目的值是 Python,它就不会成为子列表的一部分。

现在,如果你不想创建一个新的列表,而是想直接修改已经存在的列表,那么就使用切片赋值与列表理解相结合。

通过切片赋值,你可以修改和替换列表的某些部分(或分片)。

要替换整个列表,请使用 [:] 切片语法,同时使用列表理解。

列表理解设置了一个条件,即任何值为 Python 的项目将不再是列表的一部分。

programming_languages = ["JavaScript", "Python", "Java", "Python", "C++", "Python"]

programming_languages[:] = (value for value in programming_languages if value != "Python")

print(programming_languages)

#输出
#['JavaScript', 'Java', 'C++']

总结

就是这些啦!你现在知道了如何使用 remove() 方法在 Python 中删除一个列表项。你还看到了一些在 Python 中删除列表中一个项目的所有实例的方法。

我希望你觉得这篇文章很有用。