Предотвращение повторных вызовов функций в синтаксисе понимания списка
У меня есть понимание списка, которое приближается к:
[f(x) for x in l if f(x)]
Где l - это список, а f (x) - дорогая функция, которая возвращает список.
Я хочу избежать оценки f (x) дважды для каждого непустого вхождения f (x). Есть ли какой-нибудь способ сохранить его вывод в понимании списка?
Я мог бы удалить окончательное условие, сгенерировать весь список и затем удалить его, но это кажется расточительным.