На этом шаге мы рассмотрим назначение и использование этой функции.
Встроенная функция map () позволяет применить функцию к каждому элементу последовательности. Функция имеет следующий формат:
map(<Функция>, <Последовательность1>[, ..., <ПоследовательностьN>])
Функция map () возвращает объект, поддерживающий итерации (а не список, как это было ранее в Python 2). Чтобы получить список в версии Python 3, необходимо результат передать в функцию list ().
В качестве параметра <Функция> указывается ссылка на функцию (название функции без круглых скобок), которой будет передаваться текущий элемент последовательности. Внутри функции обратного вызова необходимо вернуть новое значение. Для примера прибавим к каждому элементу списка число 10:
def func(elem): """ Увеличение значения каждого элемента списка """ return elem + 10 # Возвращаем новое значение arr = [1, 2, 3, 4, 5] print(list(map(func, arr)))
Результат выполнения:
[11, 12, 13, 14, 15]
Функции map () можно передать несколько последовательностей. В этом случае в функцию обратного вызова будут передаваться сразу несколько элементов, расположенных в последовательностях на одинаковом смещении. Просуммируем элементы трех списков:
def func(e1, e2, e3): """ Суммирование элементов трех разных списков """ return e1 + e2 + e3 # Возвращаем новое значение arr1 = [1, 2, 3, 4, 5] arr2 = [10, 20, 30, 40, 50] arr3 = [100, 200, 300, 400, 500] print(list(map(func, arr1, arr2, arr3)))
Результат выполнения:
[111, 222, 333, 444, 555]
Если количество элементов в последовательностях будет разным, то в качестве ограничения выбирается последовательность с минимальным количеством элементов:
def func(e1, e2, e3): """ Суммирование элементов трех разных списков """ return e1 + e2 + e3 # Возвращаем новое значение arr1 = [1, 2, 3, 4, 5] arr2 = [10, 20] arr3 = [100, 200, 300, 400, 500] print(list(map(func, arr1, arr2, arr3)))
Результат выполнения:
[111, 222]
На следующем шаге мы рассмотрим функцию zip().