Lambda, map и filter в Python

Питон

В данной статье мы подробно рассмотрим что такое функциональное программирование, а также про некоторое методы (map, lambda и прочие). Если вы новичок или вам просто интересна это тема, то мы начинаем.

Lambda, map и filter в python

Lambda — грубо говоря, это функция, которую можно использовать один раз (одноразовая). Ее можно задействовать только при создании и используется она, как правильно, в комбинации с другими функциями. Например, map, filter, zip.

mile_distances = [1.0, 6.5, 17.4, 2.4, 9]
kilometer_distances = list(map(lambda x: x * 1.6, mile_distances))

print (kilometer_distances)

Map — очень полезная функция и вот почему: она принимает в себя 2 аргумента, один из которых функция, а второй последовательность. Она будет сама пробегать по всей последовательности и применять заданную функцию. Конечно, для таких целей можно использовать циклы, но использовать именно map выгоднее хотя бы потому, что она занимает гораздо меньше строк кода.

old_list = [‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’]
new_list = list(map(int, old_list))
print (new_list)

Стоит сказать, что map сработает, даже если ей передать 2 последовательности, тогда она просто прекратит работать на той, в которой меньше элементов.

Filter — не сложно догадаться, что данная функция просто сортирует какую-то последовательность. Она так же, как и map, принимает два аргумента: функцию и последовательность.

list = [‘одуванчик’, ‘рис’, ‘одуванчик’, ‘одуванчик’, ‘рис’, ‘одуванчик’, ‘рис’, ‘рис’, ‘рис’, ‘одуванчик’]
sortedList = list(filter(lambda x: x == ‘рис’, list))
print (sortedList )
[‘рис’, ‘рис’, ‘рис’, ‘рис’, ‘рис’]

Отличительной чертой filter является то, что функция должна выдавать значения True (False), чтобы весь процесс сортировки проходил корректно.

Map, filter, reduce

Итак, мы уже познакомились с несколькими функциями map, которая применяет какое-то lambda выражение для всей последовательности, filter, которая фильтрует последовательность, теперь же рассмотрим что такое reduce. Reduce — позволяет применять к последовательности определенную функцию и возвращает два значения. Рассмотрим это на примере.

Перед тем, как мы перейдем на примеры стоит сказать, что в Python 2 reduce шел из коробки, а в Python 3 его убрали, поэтому подключать необходимо вручную.

from functools import reduce
number = [3,6,7,9,10]
result = reduce(lambda a,b: a + b, number)
print (result) => 32

Функциональное программирование в python

Функциональное программирование — это такой подход программирования, в котором приложение рассматривается как вычисление математических функций. Обычно, говоря о таком методе, автоматически подразумеваются функции, которые мы уже сегодня прошли.

Функции map, zip и lambda в примерах

Давай посмотрим как же работают некоторые функции на практике:

map
OldList= [’12’, ’22’, ’33’, ’45’, ’56’, ’67’, ’78’]
NewList= list(map(int, OldList))
print (NewList)
[12, 22, 33, 45, 56, 67, 78]

Как видите, тут map, превратила числа, находящие в массиве как строки, в настоящие числа.

zip
one = [1,2,3]
two = «xyz»
three = (False, None)
result = list(zip(one, two, three))
print (result) => [(1, ‘x’, False), (2, ‘y’, None)]

Zip заканчивает свое выполнение, когда закончится самый маленький список.

lambda
>>> sum = lambda x,y: x + y
>>> sum(25, 17)
42

Почему map и reduce лучше?

У данных функций есть ряд преимуществ, которые мы сейчас затронем:

  • они значительно сокращают код;
  • map и reduce — функциональны, то есть в отличие от циклов от никак не повлияют на код, который находится перед или после них;
  • они делают код более читабельным;
  • они имеют много «друзей», которые облегчают работу с ними (find, any, allи filter).

В заключении я хочу напомнить, что потреблять знания и не использовать их на практике — бесполезно. Поэтому прямо сейчас запускайте свою среду разработки и начинайте применять все, что вы сегодня узнали на практике. Удачи в освоение программирование!

Оцените статью
Образовательный портал WELCOME4U.RU
Добавить комментарий

Adblock
detector