2010-10-10 69 views
13

Necesito construir una lista a partir de una cadena en python usando la sintaxis [f(char) for char in string] y me gustaría poder ignorar (no insertar en la lista) los valores de f (x) que son iguales a None.Ignorar un elemento al compilar la lista en python

¿Cómo puedo hacer eso?

Respuesta

27

Podríamos crear una "subconsulta".

[r for r in (f(char) for char in string) if r is not None] 

Si permite que todos los falsos valores (0, Falso, Ninguno, etc.) para ser ignorado, así, filter podrían utilizarse:

filter(None, (f(char) for char in string)) 
# or, using itertools.imap, 
filter(None, imap(f, string)) 
+0

Me gusta el primero, gracias! Muy limpio para construir un iterable como intermediario. He estado haciendo dos líneas, o '[f (x) para x en l si f (x) no es Ninguno]', realizando innecesariamente la op dos veces. –

Cuestiones relacionadas