Язык программирования Python

Как использовать функцию map в Python

Введение

map() – это встроенная функция Python, которая применяет функцию ко всем элементам в итерируемых данных.

Она позволяет писать простой и чистый код без использования циклов.

Функция map () в Python

Функция map() имеет следующий вид:

map(function, iterable,...)
Code language: JavaScript (javascript)

Принимает два обязательных аргумента:

  • function: функция, вызываемая для каждого элемента итерабельной таблицы.
  • iterable: один или несколько объектов, поддерживающих итерацию. Большинство встроенных объектов Python, таких как списки, словари и кортежи, являются итерируемыми.

В Python 3 функция map() возвращает объект map с размером, равным размеру переданного объекта iterable. В Python 2 функция возвращает список.

Давайте рассмотрим пример, чтобы лучше понять, как использовать функцию map().

Предположим, у нас есть список строк, и мы хотим преобразовать каждый элемент в верхний регистр.

Один из способов сделать это – использовать традиционный цикл for.

directions = ["север", "юг", "восток", "запад"] directions_upper = [] for direction in directions: d = direction.upper() directions_upper.append(d) print(directions_upper)
Code language: PHP (php)
['СЕВЕР, 'ЮГГ, 'ВОСТОКТОК, 'ЗАПАД]
Code language: JSON / JSON with Comments (json)

С функцией map() ваш код станет намного проще и гибче.

def to_upper_case(s): return s.upper() directions = ["север", "юг", "восток", "запад"] directions_upper = map(to_upper_case, directions) print(list(directions_upper))
Code language: PHP (php)

С помощью функции list() мы преобразуем возвращаемый объект map в список:

['СЕВЕР, 'ЮГГ, 'ВОСТОКТОК, 'ЗАПАД]
Code language: JSON / JSON with Comments (json)

Если функция проста, то наиболее удобным способом является использование лямбда-функции:

directions = ["север", "юг", "восток", "запад"] directions_upper = map(lambda s: s.upper(), directions) print(list(directions_upper))
Code language: PHP (php)

Лямбда-функция – это небольшая анонимная функция.

Вот еще один пример, который показывает, как создать список квадратных чисел от 1 до 10:

squares = map(lambda n: n*n, range(1, 11)) print(list(squares))
Code language: PHP (php)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Code language: JSON / JSON with Comments (json)

Функция range() генерирует последовательность целых чисел.

Использование map () с несколькими итерациями

Вы можете передать функции map() столько итераций, сколько пожелаете.

Количество необходимых входных аргументов, принимаемых функцией обратного вызова, должно быть равно количеству итераций.

В следующем примере показано, как перемножить элементы двух списков:

def multiply(x, y): return x * y a = [1, 4, 6] b = [2, 3, 5] result = map(multiply, a, b) print(list(result))
Code language: PHP (php)
[2, 12, 30]
Code language: JSON / JSON with Comments (json)

Тот же код, но с использованием лямбда-функции будет выглядеть следующим образом:

a = [1, 4, 6] b = [2, 3, 5] result = map(lambda x, y: x*y, a, b) print(list(result))
Code language: PHP (php)

Если предоставлено несколько итераций, размер возвращаемого объекта равен самой короткой итерации.

Рассмотрим пример, когда длина итераций не одинакова:

a = [1, 4, 6] b = [2, 3, 5, 7, 8] result = map(lambda x, y: x*y, a, b) print(list(result))
Code language: PHP (php)

Лишние элементы (7 и 8) игнорируются:

[2, 12, 30]
Code language: JSON / JSON with Comments (json)

Заключение

map() принимает объект iterable вместе с функцией и применяет эту функцию к каждому элементу iterable.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *