Быстрый в изучении - мощный в программировании
>> Telegram ЧАТ для Python Программистов

Свободное общение и помощь советом и решением проблем с кодом! Заходите в наш TELEGRAM ЧАТ!

>> Python Форум Помощи!

Мы создали форум где отвечаем на все вопросы связанные с языком программирования Python. Ждем вас там!

>> Python Канал в Telegram

Обучающие статьи, видео и новости из мира Python. Подпишитесь на наш TELEGRAM КАНАЛ!

Современные альтернативы функциям map, filter и reduce в Python

30 октября 2017 г. Archy Просмотров: 22985 RSS 6
Общие вопросы » Python для начинающих , , , , ,
Современные альтернативы функциям map, filter и reduce в Python

В функциональных языках программирования обычно имеются функции высокого порядка map, filter и reduce(иногда под другими именами).

Функции map и filter по-прежнему встроены в Python 3, но с появлением списковых включений и генераторных выражений потеряли былую значимость. Как списковое включение, так и генераторное выражение могут сделать то же, что комбинация map и filter, только код будет выглядеть понятнее.

В следующем примере увидете списки факториалов, порожденные функциями map и filter, а также альтернатива в виде спискового включения.

def factorial(n):
    return 1 if n < 2 else n * factorial(n-1)
>>> list(map(factorial, range(6))) # (1)
[1, 1, 2, 6, 24, 120]
>>> [factorial(n) for n in range(6)] # (2)
[1, 1, 2, 6, 24, 120]
>>> list(map(factorial, filter(lambda n: n % 2, range(6)))) # (3)
[1, 6, 120]
>>> [factorial(n) for n in range(6) if n % 2] # (4)
[1, 6, 120]
>>>

1.Строим список факториалов от 0! до 5!.

2. Та же операция с помощью спискового включения.

3. Список факториалов нечетных чисел до 5!, построенный с использованием map и filter.

4. Списковое включение делает то же самое, заменяя map и filter и делая ненужным лямбда-выражение.

В Python 3 функции map и filter возвращают генераторы - вариант итератора - поэтому безо всяких проблем могут быть заменены генераторным выражением(в Python 2 эти функции возвращали списки, поэтому их ближайшим аналогом было списковое включение).

Функция reduce, которая в Python 3 была встроенной, теперь "понижена в звании" и перенесена в модуль functools. В той ситуации, где она чаще всего применялась, а именно для суммирования, удобнее встроенная функция sum, включенная в версию Python 2.3 в 2003 году.

Разработчики программы Adobe After Effects на одну конференцию в прошлом признались что в процессе разработки кода они часто использовали функцию reduce.

Сейчас After Effects считается лучшей программой для создания промо-роликов наподобие web hosting explainer. Если вам интересно можете зайти на популярном сайте hunterae.com и найти там больше информации о After Effects.

Она дает большой выйгрыш в плане удобочитаемости и производительности, например, далее мы будем суммировать целые числа до 99 с помощью reduce и sum:

>>> from functools import reduce # (1)
>>> from operator import add # (2)
>>> reduce(add, range(100)) # (3)
4950
>>> sum(range(100)) # (4)
4950
>>>

1. Начиная с Python 3.0, функция reduce больше не является встроенной.

2. Импортируем модуль add, чтобы не создать функцию для сложения двух чисел.

3. Вычисляем сумму целых чисел, не больших 99.

4. Решение той же задачи с помощью функции sum, импортировать функцию сложения больше не нужно.

Общая идея функций sum и reduce - применить некую операцию к каждому элементу последовательности с аккумулированием результатов и тем самым свести(редуцировать) последовательность значений к одному.

Редуцирующими являются также встроенные функции all и any:

all(Iterable) - возвращает True, если каждый элемент объекта Iterable похож на истинный, например all([]) возвращает True.

any(Iterable) - возвращает True, если хотя бы один элемент объекта Iterable похож на истинный, например any([]) возвращает False.

Советуем вам следующее видео к просмотру:

Комментариев: 6
  1. Александр | 2021-08-31 в 13:28:29

    Видео не отображается

  2. Здравствуйте уважаемые! Устройства прослушивания

    Широкий ассортимент велосипедных аксессуаров для для всех стилей катания и типов велосипедов сделают вашу поездку на велосипеде удобной, легкой и быстрой. Аксессуары к велосипедам Sigma Sport, SKS, CatEye, VDO, TransX, Uno, Core, Zefal и других производителей. Велосипедные фары и мигалки, велокомпьютеры, пульсометры, крылья, багажники, детские велокресла и многое другое. Ищите и выбирайте велоаксессуары в нашем каталоге, в случаи вопросов - наши консультанты всегда помогут определиться с выбором и покупкой велоаксессуаров.

    Хорошего дня!

  3. Привет уважаемые! Видеокамеры в вещах

    Приборы ночного видения Наиболее простым является ночной монокуляр — удерживаемая в руке оператора зрительная труба обычно невысокой кратности. Существуют также приставки ночного видения к дневным оптическим прицелам. Эти приборы должны выдерживать отдачу оружия, не все прицелы могут применяться на стрелковом оружии высокой мощности. Альтернативным вариантом прицеливания через ПНВ является использование закрепленного на оружии инфракрасного лазерного целеуказателя, невидимый глазу луч которого наблюдается через очки ночного видения. Приборы ночного видения также устанавливаются и на боевую технику, где они интегрированы в прицельные комплексы.

    Хорошего дня!

  4. Добрый день друзья! ВИДЕООБЗОРЫ ТОВАРОВ

    Прослушивающие устройства - шпионские устройства, такие как жучки. Самый широкий выбор от шпиона до полупрофессиональных устройств на складе для продажи.С этим устройством прослушивания аудио-шпионов, вы можете слышать разговоры через стены и другие барьеры.

    От всей души Вам всех благ!

  5. Привет уважаемые! Велосипеда товары

    Автоаксессуары – это широкая группа товаров, которую можно условно разделить на 3 подкатегории: автомобильные аксессуары для интерьера, экстерьера и полезные приспособления. Каждая из них включает в себя большое количество товаров разных типов.Предметы интерьера салона-Эти аксессуары предназначены для использования внутри салона автомобиля. Они служат для обеспечения большего комфорта водителя и позволяют держать различные мелочи под рукой.Элементы экстерьера-Назначение этих аксессуаров самое разное – от декора до перевозки грузов, которые не умещаются в багажник. Полезные приспособления-Эти автоаксессуары для авто помогут водителю в самостоятельном обслуживании машины и уходе за ней.

    Увидимся!

  6. Приветствую Вас уважаемые! Приборы ночного видения

    Приборы ночного видения Наиболее простым является ночной монокуляр — удерживаемая в руке оператора зрительная труба обычно невысокой кратности. Существуют также приставки ночного видения к дневным оптическим прицелам. Эти приборы должны выдерживать отдачу оружия, не все прицелы могут применяться на стрелковом оружии высокой мощности. Альтернативным вариантом прицеливания через ПНВ является использование закрепленного на оружии инфракрасного лазерного целеуказателя, невидимый глазу луч которого наблюдается через очки ночного видения. Приборы ночного видения также устанавливаются и на боевую технику, где они интегрированы в прицельные комплексы.

    От всей души Вам всех благ!

Оставьте комментарий!

Используйте нормальные имена.

Имя и сайт используются только при регистрации

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)