Evitar llamadas de función repetidas en la sintaxis de comprensión de lista
Tengo una lista de comprensión que se aproxima a:
[f(x) for x in l if f(x)]
Donde l es una lista y f (x) es una función costosa que devuelve una lista.
Quiero evitar evaluar f (x) dos veces por cada ocurrencia no vacía de f (x). ¿Hay alguna manera de guardar su salida dentro de la lista de comprensión?
Podría eliminar la condición final, generar la lista completa y luego podarla, pero eso parece un desperdicio.