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.

Respuestas a la pregunta(11)

Su respuesta a la pregunta