有没有简单的方法按值删除列表元素?

49 浏览
0 Comments

有没有简单的方法按值删除列表元素?

我想要从列表中删除一个值,如果它存在于列表中(可能不存在的话)。

a = [1, 2, 3, 4]
b = a.index(6)
del a[b]
print(a)

上面的代码会报错:

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)

但是难道没有更简单的方法吗?

admin 更改状态以发布 2023年5月21日
0
0 Comments

通常情况下,如果您要求Python执行它无法执行的操作,它会抛出一个异常,因此您需要执行以下操作之一:

if c in a:
    a.remove(c)

或:

try:
    a.remove(c)
except ValueError:
    pass

异常并不一定是一件坏事,只要您预期并正确处理它。

0
0 Comments

使用 list.remove 方法可以删除列表中第一次出现的元素:

>>> xs = ['a', 'b', 'c', 'd']
>>> xs.remove('b')
>>> print(xs)
['a', 'c', 'd']

使用 列表推导式 可以删除列表中所有出现的元素:

>>> xs = ['a', 'b', 'c', 'd', 'b', 'b', 'b', 'b']
>>> xs = [x for x in xs if x != 'b']
>>> print(xs)
['a', 'c', 'd']

0