Предмет: Информатика, автор: wrtvpxf94p

Дан список из имён. Найдите самое длинное имя из списка функцией reduce?
язык Python
Пожалуйста:)

Ответы

Автор ответа: Favorite1878
1

Ответ:

Функция будет выглядеть следующим образом:

reduce(lambda x, y: x if len(x) > len(y) else y, name_list)

Объяснение:

from functools import reduce

name_list = ["Вася", "Ольга", "Вячеслав", "Екатерина", "Саша"]

longest_name = reduce(lambda x, y: x if len(x) > len(y) else y, name_list)

Результат работы я закрепил.

Итак, первой строчкой мы импортируем саму функцию, в Python 3 reduce более не является встроенной функцией.

Вторая строка - список имён для примера.

Наконец, третьей строкой мы используем reduce и лямбда-выражение. Reduce принимает функцию и последовательность, он чем-то похож на map, только функция принимает по два значения из списка, в итоге первое из них - аккумулированное, т.е. результат выполнения предыдущего запуска лямбда-функции.

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

И да, функция reduce в Python 3 уже не является актуальной. Более того - не рекомендуется к использованию.

Приложения:
Похожие вопросы
Предмет: Қазақ тiлi, автор: elenanomad
Предмет: Математика, автор: 3354333