А ну, познания человеческие, поглядим, кто кого! (Ж.-П. Сартр).

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

FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
13 июля 2020
Функция map() в Python
map() это встроенная функция в Python, которая применяет функцию ко всем элементам в теле цикла. Это позволяет писать простой и чистый код без использования циклов.

 

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

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

map(function, iterable, ...)

 

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

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

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

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

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

directions = ["north", "east", "south", "west"]
directions_upper = []

for direction in directions:
    d = direction.upper()
    directions_upper.append(d)

print(directions_upper)

 

['NORTH', 'EAST', 'SOUTH', 'WEST']

 

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

def to_upper_case(s):
    return s.upper()

directions = ["north", "east", "south", "west"]

directions_upper = map(to_upper_case, directions)

print(list(directions_upper))

 

Мы используем функцию list() для преобразования возвращенного объекта карты в список :

['NORTH', 'EAST', 'SOUTH', 'WEST']

 

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

directions = ["north", "east", "south", "west"]

directions_upper = map(lambda s: s.upper(), directions)

print(list(directions_upper))

 

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

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

squares = map(lambda n: n*n , range(1, 11))
print(list(squares))

 

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

 

Функция 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))
[2, 12, 30]

 

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

a = [1, 4, 6]
b = [2, 3, 5]

result = map(lambda x, y: x*y, a, b)

print(list(result))

 

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

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

a = [1, 4, 6]
b = [2, 3, 5, 7, 8]

result = map(lambda x, y: x*y, a, b)

print(list(result))

 

Избыточные элементы (7 и 8) игнорируются:

[2, 12, 30]

 

Вывод

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

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

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

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

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close