Найти тему
Блог Хонеста

Функциональное программирование на Python. Лямбда функции, map, filter и reduce.

Оглавление

Всем привет! Сегодня мы поговорим о такой штуке, как функциональное программирование, а именно лямбда функции, map, filter и reduce в Python.

Так что ж, начнем!

1. Lambda-функции.

Лямбда функции – это обычные функции, только написанные в одну строчку. Имеют синтаксис lambda <args>: expression. Например чтобы сделать функцию число a делиться на число b мы можем воспользоваться двумя эквивалентными выражениями:

Эти выражения абсолютно эквивалентны, но лямбда написана в одну строчку, а обычная функция в две.
Эти выражения абсолютно эквивалентны, но лямбда написана в одну строчку, а обычная функция в две.

Мы могли и такой фокус сделать: (lambda a, b: a%b==0)(5, 4), это было бы тоже самое.

Вы можете спросить – а для чего лямбда. Сейчас узнаете

2. map()

Это функция принимает итерируемую последовательность (список, кортеж, множество, range-итератор и др.), применяет к каждому элементу функцию и возвращает итерируемый объект, который можно преобразовать в список или прокрутить его через цикл for. Давайте примеры!

Например пусть каждый элемент увеличиться в 2 раза. Вот код:

Вот на этом примере примерно понятно, что такое map().
Вот на этом примере примерно понятно, что такое map().

3. filter()

Название говорит само за себя – эта функция фильтрует в последовательности элементы исходя из того, что мы ей дали. Пусть мы отфильтруем числа кратные 2. Возьмем функцию is_odd и отфильтруем числа кратные 2.

-4

4. reduce()

Это функция уже не встроенная, а находится в стандартном модуле functools. Эта функция, как и map и filter, принимает 2 аргумента – функцию и последовательность, однако в отличие от своих собратьев функция-аргумент reduce должна принимать два аргумента. Давайте на примере функции sum это все рассмотрим:

for и reduce действуют примерно одинаково.
for и reduce действуют примерно одинаково.

Вот и все друзья. Ставьте лайки и подписывайтесь на канал, не забывайте о нашем телеграмме (@rai_programmista). Всем пока и до скорых встреч.

Наука
7 млн интересуются