How can I ignore ValueError when I try to remove an element from a list?

A good and thread-safe way to do this is to just try it and ignore the exception:

try:
    a.remove(10)
except ValueError:
    pass  # do nothing!

I'd personally consider using a set instead of a list as long as the order of your elements isn't necessarily important. Then you can use the discard method:

>>> S = set(range(10))
>>> S
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> S.remove(10)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 10
>>> S.discard(10)
>>> S
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

As an alternative to ignoring the ValueError

try:
    a.remove(10)
except ValueError:
    pass  # do nothing!

I think the following is a little more straightforward and readable:

if 10 in a:
    a.remove(10)