eliminar elementos en una lista presente en otra lista

Tengo list1 y list2 . list2 es un grupo de palabras que deben eliminarse de list1 , por ejemplo:

 list1=['paste', 'text', 'text', 'here', 'here', 'here', 'my', 'i', 'i', 'me', 'me'] list2=["i","me"] 

Salida deseada:

 list3=['paste', 'text', 'text', 'here', 'here', 'here', 'my'] 

He intentado diferentes versiones usando ‘for’ pero hasta ahora no hay resultados.

¡Cualquier idea sería apreciada!

Utilice la lista de comprensión :

 >>> list1 = ['paste', 'text', 'text', 'here', 'here', 'here', 'my', 'i', 'i', 'me', 'me'] >>> list2 = ["i","me"] >>> list3 = [item for item in list1 if item not in list2] >>> list3 ['paste', 'text', 'text', 'here', 'here', 'here', 'my'] 

NOTA: Las búsquedas en las listas son O(n) , en su lugar, considere hacer un conjunto de la list2 ; las búsquedas en los conjuntos son O(1) .

¿Qué hay de aprovechar la aritmética set?

 diff = set(list1) - set(list2) result = [o for o in list1 if o in diff] 

O incluso mejor (más eficiente):

 set2 = set(list2) result = [o for o in list1 if o not in set2]