Функция map() в Python — что делает и примеры
В этом уроке вы узнаете, что делает функция map() в Python, как ее использовать при работе со списками.
- Что такое функция map() в Python?
- Дополнительные примеры функции map() со списками в Python
- 1) Использование функции map() для списка строк
- 2) Использование функции map() для списка кортежей
Что такое функция 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))