I'm iterating over a list of tuples in Python, and am attempting to remove them if they meet certain criteria.
for tup in somelist:
You can use a list comprehension to create a new list containing only the elements you don't want to remove:
somelist = [x for x in somelist if not determine(x)]
Or, by assigning to the slice
somelist[:], you can mutate the existing list to contain only the items you want:
somelist[:] = [x for x in somelist if not determine(x)]
This approach could be useful if there are other references to
somelist that need to reflect the changes.
Instead of a comprehension, you could also use
itertools. In Python 2:
from itertools import ifilterfalse somelist[:] = ifilterfalse(determine, somelist)
Or in Python 3:
from itertools import filterfalse somelist[:] = filterfalse(determine, somelist)