Czy możliwe jest dodanie klauzuli where ze zrozumieniem listy?

Rozważmy następujące rozumienie listy

[ (x,f(x)) for x in iterable if f(x) ]

To filtruje warunek iterowalnyf i zwraca paryx,f(x). Problem z tym podejściemf(x) jest obliczany dwukrotnie. Byłoby wspaniale, gdybyśmy mogli pisać tak

[ (x,fx) for x in iterable if fx where fx = f(x) ]
or
[ (x,fx) for x in iterable if fx with f(x) as fx ]

Ale w pythonie musimy pisać za pomocą zagnieżdżonych wyrażeń, aby uniknąć powielania wywołań f (x) i sprawia to, że zrozumienie wygląda mniej jasno

[ (x,fx) for x,fx in ( (y,f(y) for y in iterable ) if fx ]

Czy jest jakiś inny sposób na uczynienie go bardziej pytonicznym i czytelnym?

Aktualizacja

Wkrótce w Pythonie 3.8!WERWA

# Share a subexpression between a comprehension filter clause and its output
filtered_data = [y for x in data if (y := f(x)) is not None]

questionAnswers(4)

yourAnswerToTheQuestion