Vermeiden wiederholter Funktionsaufrufe in der Syntax des Listenverständnisses

Ich habe ein Listenverständnis, das sich annähert an:

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

Dabei ist l eine Liste und f (x) eine teure Funktion, die eine Liste zurückgibt.

Ich möchte vermeiden, f (x) zweimal für jedes nicht leere Vorkommen von f (x) zu bewerten. Gibt es eine Möglichkeit, die Ausgabe innerhalb des Listenverständnisses zu speichern?

Ich könnte die endgültige Bedingung entfernen, die gesamte Liste generieren und sie dann beschneiden, aber das scheint verschwenderisch.

Antworten auf die Frage(11)

Ihre Antwort auf die Frage