2010-09-04 21 views

Respuesta

57
filter(r.match, list) 
+0

realidad, listas por comprensión son por lo general las preferidas sobre construcciones funcionales, tales como filtro, reducir, lambda, etc. –

+22

@Ivo : Generalmente son preferidos porque generalmente son más claros y, a menudo, más concisos. Sin embargo, en este caso, la versión 'filter' es perfectamente clara y tiene mucho menos ruido. – sepp2k

32

Ejemplo completo:

import re 
mylist = ["dog", "cat", "wildcat", "thundercat", "cow", "hooo"] 
r = re.compile(".*cat") 
newlist = filter(r.match, mylist) 
print str(newlist) 

Prints:

['cat', 'wildcat', 'thundercat'] 
+3

Hola, cuando ejecuto el código anterior, obtengo '' ¿Qué estoy haciendo mal? – Joshua

+1

De acuerdo con python docs (python 2.7.12): https://docs.python.org/2/library/functions.html#filter filtro devuelve una lista, no un objeto. También puede verificar el código: https://repl.it/X3G/5786 (solo haga clic en ejecutar) – Mercury

+1

Gracias. Estoy usando Python 3.5.2 en una Mac. Probé tu enlace. Por supuesto que funciona, aunque no estoy seguro de por qué recibo ese mensaje. Incluso eliminé el 'str' ya que' filter' devuelve una lista de todos modos, en vano ... – Joshua

Cuestiones relacionadas