É possível adicionar uma cláusula where com compreensão de lista?

Considere a seguinte compreensão da lista

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

Isso filtra o iterável com base em uma condiçãof e retorna os pares dex,f(x). O problema com esta abordagem éf(x) é calculado duas vezes. Seria ótimo se pudéssemos escrever como

[ (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 ]

Mas em python temos que escrever usando compreensões aninhadas para evitar chamadas duplicadas para f (x) e isso torna a compreensão menos clara

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

Existe alguma outra maneira de torná-lo mais pythonic e legível?

Atualizar

Em breve em python 3.8!PEP

# 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