如果一个值存在于 Python 中,则从列表中删除它
Remove a value from a List if it exists in Python
从列表中删除一个值(如果存在):
- 使用
in
运算符检查列表中是否存在该值。 - 如果满足条件,则使用该
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
计算为 ,否则计算为。True
x
l
False
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
循环。
从列表中删除一个值(如果存在):
while
只要列表中存在该值,就使用循环进行迭代。- 使用
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
循环的地方运行。