Quiero filtrar cadenas en una lista basada en una expresión regular.Expresiones regulares: Buscar en la lista
¿Hay algo mejor que [x for x in list if r.match(x)]
?
Quiero filtrar cadenas en una lista basada en una expresión regular.Expresiones regulares: Buscar en la lista
¿Hay algo mejor que [x for x in list if r.match(x)]
?
filter(r.match, list)
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']
Hola, cuando ejecuto el código anterior, obtengo '
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
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
realidad, listas por comprensión son por lo general las preferidas sobre construcciones funcionales, tales como filtro, reducir, lambda, etc. –
@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