map()
используется для применения функции к каждому элементу итерируемого объекта. Функция может быть любая, которая принимает аргументы.
Здесь мы рассмотрим три способа работы с map
: с функцией lambda
(анонимная функция), со встроенной, и с определяемой пользователем функцией.
Функция map
имеет следующий синтаксис:
map(function, iterable, [iterable 2, iterable 3, ...])
Встроенные функции
В стандартной библиотеке Python много доступных функций, которые можно использовать с map
. Все они перечислены в документации Python.
Предположим, есть список строк, каждый из элементов которого нужно превратить в число. Это запросто можно сделать с помощью функции map
и встроенной функции int
.
>>> elements = ['1','2','3','4']
>>> list(map(int, elements))
[1, 2, 3, 4]
Или предположим, у нас есть список слов, в котором каждый элемент нужно перевести в нижний регистр:
>>> elements = ['ПРИВЕТ','Hello']
>>> list(map(str.lower, elements))
['привет', 'hello']
Функции Lambda
Вместе с функцией map
можно использовать и анонимные функции. Это довольно частый сценарий.
Синтаксис map()
с простой lambda функцией где мы удвоим каждый элемент в списке:
>>> nums = [100, 200, 300, 400, 500]
>>> list(map(lambda x: x*2, nums))
[200, 400, 600, 800, 1000]
Или же у нас есть список пользователей, и мы хотим с помощью метода title
сделать первую букву имени заглавной:
>>> users= ['артем', 'андрей', 'алексей']
>>> list(map(lambda x: x.title(), users))
['Артем', 'Андрей', 'Алексей']
Обычные функции
Определим простую функцию calc()
с двумя параметрами x
и y
, которая принимает в качестве аргументов два числа, складывает их, и возвращать результат.
>>> def calc(x,y):
... return x+y
Если функция, которую использует map
, ожидает два аргумента, то передаются два списка
>>> a = [2,4,6,8,10]
>>> b = [1,3,5,7,9]
>>> list(map(calc, a,b))
[3, 7, 11, 15, 19]
Заключение
Сегодня мы рассмотрели много разных способах использования функции map
в Python. Теперь мы можем избежать написания громоздкого кода используя map
с собственными, встроенными, и с lambda
функциями.