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.