Функция map() в Python — что делает и примеры

В этом уроке вы узнаете, что делает функция map() в Python, как ее использовать при работе со списками.

Содержание

Что такое функция map() в Python?

При работе со списком (или кортежем) часто требуется преобразовать элементы списка и вернуть новый список, содержащий преобразованные элементы.

Предположим, вы хотите удвоить каждое число в следующем списке бонусов:

bonuses = [100, 200, 300]

Для этого вы можете использовать цикл for для перебора элементов, удвоения каждого из них и добавления в новый список следующим образом:

bonuses = [100, 200, 300]

new_bonuses = []

for bonus in bonuses:
    new_bonuses.append(bonus*2)

print(new_bonuses)

Выход:

[200, 400, 600]

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

Ниже показан основной синтаксис функции map():

iterator = map(fn, list)

В этом синтаксисе fn — это имя функции, которая будет вызывать каждый элемент списка. Фактически, вы можете передать в функцию map() любую итерацию, а не только список или кортеж.

Возвращаясь к предыдущему примеру, чтобы использовать функцию map(), вы определяете функцию, которая сначала удваивает bonus, а затем используете функцию map() следующим образом:

def double(bonus):
    return bonus * 2


bonuses = [100, 200, 300]

iterator = map(double, bonuses)

Или вы можете сделать этот код более кратким, используя такое лямбда-выражение:

bonuses = [100, 200, 300]
iterator = map(lambda bonus: bonus*2, bonuses)

Если у вас есть итератор, вы можете перебирать новые элементы, используя цикл for.

Или вы можете преобразовать итератор в список, используя функцию list():

bonuses = [100, 200, 300]
iterator = map(lambda bonus: bonus*2, bonuses)
print(list(iterator))

Дополнительные примеры функции  map() со списками в Python

Давайте рассмотрим еще несколько примеров использования функции Python map() со списками.

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

В следующем примере функция map() используется для возврата нового списка, в котором каждый элемент преобразуется в правильный регистр:

names = ['david', 'peter', 'jenifer']
new_names = map(lambda name: name.capitalize(), names)
print(list(new_names))

Выход:

['David', 'Peter', 'Jenifer']

2) Использование функции map() для списка кортежей

Предположим, что у вас есть следующая корзина покупок, представленная в виде списка кортежей:

carts = [['SmartPhone', 400],
         ['Tablet', 450],
         ['Laptop', 700]]

И вам нужно рассчитать сумму 10% налога для каждого продукта. Кроме того, вам необходимо добавить сумму налога к третьему элементу каждого пункта списка.

Список возврата должен быть примерно таким:

[['SmartPhone', 400, 40.0],
['Tablet', 450, 45.0],
['Laptop', 700, 70.0]]

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

carts = [['SmartPhone', 400],
         ['Tablet', 450],
         ['Laptop', 700]]

TAX = 0.1
carts = map(lambda item: [item[0], item[1], item[1] * TAX], carts)

print(list(carts))
Похожие посты
Добавить комментарий

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