Где использование lambda обычно оправдано и не ухудшает читаемость?

Alist(map(lambda x: x * 2 + 1, items))
Blist(filter(lambda x: x > 0 and x < 10, items))
Cany(map(lambda x: x > 0 and x < 10, items))
Dsorted(users, key=lambda u: u['last_login'])
Правильный ответ. Короткая lambda уместна как ключ сортировки или агрегации: одна строка локально объясняет, по какому полю работаем.

Разбор

sorted(users, key=lambda u: u['last_login']) — типичный случай, где lambda действительно делает код короче и понятнее: вместо именования отдельной функции из одной строки. В вариантах с map()/filter()/any() те же операции лаконичнее выражаются через списочное включение или генератор: [x * 2 + 1 for x in items], [x for x in items if 0 < x < 10] и any(0 < x < 10 for x in items). Там lambda добавляет лишнюю обёртку, а в варианте с sorted() — действительно уместна.

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Продолжить в браузере

Ещё вопросы по теме «Генераторы списков и встроенные функции»