Решения, использующие lambda
и functools.partial
, совершенно правильные и прямо отвечают на ваш вопрос, но я не думаю, что они действительно идеальное решение.
Использование filter
/ itertools.ifilter
/ map
/ itertools.imap
с анонимной функцией всегда намного менее понятно, чем использование выражения генератора или понимания списка. Например, в этом случае я бы написал выражение генератора
(item for item in iterable if is_a_nice_element(item, constant))
вместо использования ifilter
. В этом случае решение ifilter
все еще довольно читабельно, но во многих случаях попытка решить множество проблем, связанных с определением только правильной функции, не будет столь же полезной, как просто выполнение операции.