Предотвращение повторных вызовов функций в синтаксисе понимания списка

У меня есть понимание списка, которое приближается к:

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

Где l - это список, а f (x) - дорогая функция, которая возвращает список.

Я хочу избежать оценки f (x) дважды для каждого непустого вхождения f (x). Есть ли какой-нибудь способ сохранить его вывод в понимании списка?

Я мог бы удалить окончательное условие, сгенерировать весь список и затем удалить его, но это кажется расточительным.

Ответы на вопрос(11)

Ваш ответ на вопрос