如果一个值存在于 Python 中,则从列表中删除该值

如果一个值存在于 Python 中,则从列表中删除它

Remove a value from a List if it exists in Python

从列表中删除一个值(如果存在):

  1. 使用in运算符检查列表中是否存在该值。
  2. 如果满足条件,则使用该list.remove()方法从列表中删除该值。
主程序
my_list = ['one', 'two', 'three', 'four', 'five'] value_to_remove = 'two' # ✅ Remove value from list if it exists if value_to_remove in my_list: my_list.remove(value_to_remove) print(my_list) # 👉️ ['one', 'three', 'four', 'five'] # -------------------------------------------------- # ✅ Remove all occurrences of value from list if it exists my_list = ['one', 'two', 'three', 'two', 'two'] value_to_remove = 'two' while value_to_remove in my_list: my_list.remove(value_to_remove) print(my_list) # 👉️ ['one', 'three']

第一个示例使用in运算符在删除值之前检查列表中是否存在值。

in 运算符
测试成员资格

例如,如果是 的成员,则
x in l计算为 ,否则计算为TruexlFalse

x not in l返回 的否定x in l

如果该值存在于列表中,我们使用该list.remove()方法将其删除。

主程序
my_list = ['one', 'two', 'three', 'four', 'five'] value_to_remove = 'two' if value_to_remove in my_list: my_list.remove(value_to_remove) print(my_list) # 👉️ ['one', 'three', 'four', 'five']

list.remove()方法从列表中

删除第一项,其值等于传入的参数。

remove()方法改变原始列表并返回None

此方法仅从列表中删除第一次出现的指定值。

如果您需要删除所有出现的值,请使用while循环。

从列表中删除一个值(如果存在):

  1. while只要列表中存在该值,就使用循环进行迭代。
  2. 使用list.remove()方法从列表中删除值。
主程序
my_list = ['one', 'two', 'three', 'two', 'two'] value_to_remove = 'two' while value_to_remove in my_list: my_list.remove(value_to_remove) print(my_list) # 👉️ ['one', 'three']

while只要要删除的值存在于列表中,循环就会迭代

在每次迭代中,我们使用该list.remove()方法从列表中删除值。

此方法从列表中删除所有出现的指定值。

或者,您可以使用for循环。

主程序
my_list = ['one', 'two', 'three', 'two', 'two'] value_to_remove = 'two' for item in my_list.copy(): if item == value_to_remove: my_list.remove(item) print(my_list) # 👉️ ['one', 'three']

list.copy方法返回调用该方法的对象的浅表副本

这是必要的,因为我们不允许在迭代列表时从列表中删除项目。

但是,我们可以遍历列表的副本并从原始列表中删除项目。

主程序
my_list = ['one', 'two', 'three', 'two', 'two'] value_to_remove = 'two' for item in my_list.copy(): if item == value_to_remove: my_list.remove(item) print(my_list) # 👉️ ['one', 'three']
在每次迭代中,我们检查当前项是否等于要删除的值,并使用该list.remove()方法删除匹配的元素。

在循环中从列表中删除项目时要注意的最重要的事情for是使用list.copy()方法迭代列表的副本。

如果您尝试遍历原始列表并从中删除项目,您可能会遇到难以定位的错误。

在删除之前检查值是否存在于列表中的替代方法是使用try/except语句。

主程序
my_list = ['one', 'two', 'three', 'four', 'five'] value_to_remove = 'apple' try: my_list.remove(value_to_remove) except ValueError: # 👇️ this runs pass print(my_list) # 👉️ ['one', 'two', 'three', 'four', 'five']

如果提供的值在列表中不存在,则list.remove()方法引发。ValueError

如果该值不在列表中,则except块运行。

pass如果需要忽略错误,可以使用语句。

pass 语句
什么都不做,当语法上需要语句但程序不需要任何操作时使用

如果您需要从列表中删除所有出现的指定值,您也可以使用try/except语句,但它比在删除之前检查该值是否存在于列表中更难阅读。

主程序
my_list = ['one', 'two', 'three', 'two', 'two'] value_to_remove = 'two' while True: try: my_list.remove(value_to_remove) except ValueError: break print(my_list) # 👉️ ['one', 'three']

while循环迭代直到break语句运行

break
语句跳出最内层的封闭

for循环while

在每次迭代中,我们都使用该list.remove()方法从列表中删除值。

如果列表中不存在该值,则该except块会在我们退出while循环的地方运行。