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

12 set 2022 2 min di lettura
Как использовать функцию карты в Python
Indice dei contenuti

Введение

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(). Количество требуемых входных аргументов, которые принимает функция обратного вызова, должно равняться количеству итераций.

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

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]

Вывод

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

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.