Можно ли захватить возвращаемое значение из понимания списка Python для использования условия?

Я хочу построить значение в понимании списка, но также отфильтровать это значение. Например:

[expensive_function(x) for x in generator where expensive_function(x) < 5]

Я хочу избежать вызова strict_function дважды за итерацию.

Генератор может возвращать бесконечный ряд, и понимание списка не выполняется лениво. Так что это не сработает:

[y in [expensive_function(x) for x in generator where expensive_function(x)] where y < 5]

Я мог бы написать это по-другому, но это кажется правильным для понимания списка, и я уверен, что это общий шаблон использования (возможно или нет!).

7
задан Joe 6 January 2012 в 16:57
поделиться