Почему не корректный вывод key, lambda?

Почему выводится максимальное число, кратное двум - 14?
Ведь должен вывести 100:

lst = [77, 14, 5, 9, 277, 100]
print(max(lst, key=lambda x: x % 2 == 0))

А если вместо max написать min, то вообще выведет число не кратное двум? Какая тут связь?


Ответы (1 шт):

Автор решения: Lawrence

Аргумент key в max отвечает за способ выбора наибольшего, а не за фильтрацию. Код должен выглядеть так

lst = [77, 14, 5, 9, 277, 100]
print(max(filter(lambda x: x % 2 == 0, lst)))

Твой же код находил первое чётное число. Когда ты задал аргумент key таким образом, список превратился в [False, True, False, False, False, True], и вполне логично, что первый максимум тут второй элемент, который в изначальном списке имеет значение 14.

→ Ссылка