There are many questions similar to this (here is one) but the solutions I've seen use list comprehension or filter and those ways generate a new list (or a new iterator in the case of filter in Python 3.x). There are solutions that remove instances by modifying the list itself (like this, and this), and those would be my last resort. However, I am asking to see if there a more elegant ("Pythonic" as another question calls it) way of doing it.
Why I am disregarding solutions that generate a new list: I am iterating over a collection of lists, and Python allows me to modify the "current" list I am iterating over, but not to replace it entirely:
>>> ll= [[1,2,3], [2,3,4], [4,5,6]]
>>> for l in ll:
if l[0] == 2:
l = [10]
>>> ll
[[1, 2, 3], [2, 3, 4], [4, 5, 6]] #replacement didn't happen
>>> for l in ll:
if l[0] == 2:
l.remove(2)
>>> ll
[[1, 2, 3], [3, 4], [4, 5, 6]] #modification succeeded