Шаг 67.
Основы языка Python.
Списки, кортежи, множества и диапазоны. Функция map()

    На этом шаге мы рассмотрим назначение и использование этой функции.

    Встроенная функция 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().




Предыдущий шаг Содержание Следующий шаг