2010-10-10 8 views

risposta

27

Potremmo creare una "sottoquery".

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

Se si consente tutti i valori False (0, False, None, ecc) per essere ignorato così, filter potrebbe essere utilizzato:

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

Mi piace il primo, grazie! Molto pulito per costruire un iterabile come intermedio. Ho fatto due righe, o '[f (x) per x in l se f (x) non è None]', eseguendo inutilmente l'op due volte. –

Problemi correlati