原文:Python List .remove() - How to Remove an Item from a List in Python,作者:Dionysia Lemonaki
在这篇文章中,你将学习如何使用 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 中删除列表中一个项目的所有实例的方法。
我希望你觉得这篇文章很有用。
要学习更多关于 Python 编程语言的知识,请查看 freeCodeCamp 的 Python 和科学计算认证。
你将从基础知识开始,以一种对初学者友好的交互式方式学习。你还会在最后创建五个项目,通过实践来巩固你所学的知识。
谢谢你阅读本文,祝你编码愉快!