我想从列表中删除一个值,如果它存在于列表中(可能不存在)。
a = [1, 2, 3, 4]
b = a.index(6)
del a[b]
print(a)上面的情况(其中它不存在)显示了以下错误:
Traceback (most recent call last):
File "D:\zjm_code\a.py", line 6, in <module>
b = a.index(6)
ValueError: list.index(x): x not in list所以我必须这样做:
a = [1, 2, 3, 4]
try:
b = a.index(6)
del a[b]
except:
pass
print(a)但是,没有更简单的方法来做到这一点吗?
发布于 2010-05-08 15:56:03
要删除列表中元素的第一个匹配项,只需使用list.remove
>>> a = ['a', 'b', 'c', 'd']
>>> a.remove('b')
>>> print(a)
['a', 'c', 'd']注意,它不会删除元素的所有匹配项。对此使用列表理解。
>>> a = [10, 20, 30, 40, 20, 30, 40, 20, 70, 20]
>>> a = [x for x in a if x != 20]
>>> print(a)
[10, 30, 40, 30, 40, 70]发布于 2010-05-08 16:02:03
通常,如果你告诉Python做一些它不能做的事情,它会抛出一个异常,所以你必须这样做:
if c in a:
a.remove(c)或者:
try:
a.remove(c)
except ValueError:
pass异常并不一定是一件坏事,只要它是您所期望的并得到正确处理。
发布于 2010-05-08 15:57:26
你可以做到
a=[1,2,3,4]
if 6 in a:
a.remove(6)但上面需要在列表a中搜索6个2次,所以尝试一下,除了会更快
try:
a.remove(6)
except:
passhttps://stackoverflow.com/questions/2793324
复制相似问题