Is there a simple way to delete a list element by value?

list, python

Solution

To remove the first occurrence of an element, use `list.remove`:

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

To remove all occurrences of an element, use a list comprehension:

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

Problem

I want to remove a value from a list if it exists in the list (which it may not). ``` a = [1, 2, 3, 4] b = a.index(6) del a[b] print(a) ``` The above gives the error: ``` ValueError: list.index(x): x not in list ``` So I have to do this: ``` a = [1, 2, 3, 4] try: b = a.index(6) del a[b] except: pass print(a) ``` But is there not a simpler way to do this?

Original source

Related problems