Evitar chamadas de função repetidas na sintaxe de compreensão de lista

Eu tenho uma compreensão da lista que se aproxima de:

[f(x) for x in l if f(x)]

Onde l é uma lista e f (x) é uma função cara que retorna uma lista.

Eu quero evitar avaliar f (x) duas vezes para cada ocorrência não vazia de f (x). Existe alguma maneira de salvar sua saída dentro da compreensão da lista?

Eu poderia remover a condição final, gerar toda a lista e depois podá-la, mas isso parece um desperdício.

questionAnswers(11)

yourAnswerToTheQuestion