¿Cómo puedo eliminar todas las instancias de un elemento de una lista en Python?

Digamos que tengo una lista de:

 a = [[1, 1], [2, 2], [1, 1], [3, 3], [1, 1]] 

¿Hay alguna función que elimine todas las instancias de [1, 1] ?

Si desea modificar la lista en el lugar,

 a[:] = [x for x in a if x != [1, 1]] 

Use una lista de comprensión:

 [x for x in a if x != [1, 1]] 

Google encuentra Eliminar todos los elementos de la lista , que incluye gems como

 from functools import partial from operator import ne a = filter(partial(ne, [1, 1]), a) 
 def remAll(L, item): answer = [] for i in L: if i!=item: answer.append(i) return answer 

Aquí hay una alternativa más fácil a la respuesta de Alex Martelli:

 a = [x for x in a if x != [1,1]] 
 new_list = filter(lambda x: x != [1,1], a) 

O como una función:

 def remove_all(element, list): return filter(lambda x: x != element, list) a = remove([1,1],a) 

O más general:

 def remove_all(elements, list): return filter(lambda x: x not in elements, list) a = remove(([1,1],),a) 
 filter([1,1].__ne__,a) 

python puro sin versión de módulos, o sin versión comp comp (¿es más fácil de entender?)

 >>> x = [1, 1, 1, 1, 1, 1, 2, 3, 2] >>> for item in xrange(x.count(1)): ... x.remove(1) ... >>> >>> x [2, 3, 2] 

Se puede hacer en una definición bastante fácilmente también

 def removeThis(li,this): for item in xrange(li.count(this)): li.remove(this) return li