Resumo : neste tutorial, você aprenderá como usar a map()
função Python com listas.
Introdução à função map() do Python
Ao trabalhar com uma lista (ou tupla ), muitas vezes você precisa transformar os elementos da lista e retornar uma nova lista que contém o elemento transformado.
Suponha que você queira duplicar todos os números da bonuses
lista a seguir:
bonuses = [100, 200, 300]
Linguagem de código: Python ( python )
Para fazer isso, você pode usar um loop for para iterar sobre os elementos, duplicar cada um deles e adicioná-los a uma nova lista como esta:
bonuses = [100, 200, 300]
new_bonuses = []
for bonus in bonuses:
new_bonuses.append(bonus*2)
print(new_bonuses)
Linguagem de código: Python ( python )
Saída:
[200, 400, 600]
Linguagem de código: Python ( python )
Python oferece uma maneira melhor de realizar esse tipo de tarefa usando a map()
função integrada.
A map()
função itera sobre todos os elementos de uma lista (ou tupla), aplica uma função a cada um e retorna um novo iterador dos novos elementos.
O seguinte mostra a sintaxe básica da map()
função:
iterator = map(fn, list)
Linguagem de código: Python ( python )
Nesta sintaxe, fn
é o nome da função que irá chamar cada elemento da lista.
Na verdade, você pode passar qualquer iterável para a map()
função, não apenas uma lista ou tupla.
Voltando ao exemplo anterior, para usar a map()
função, você define uma função que dobra um bônus primeiro e depois usa a função map() da seguinte forma:
def double(bonus):
return bonus * 2
bonuses = [100, 200, 300]
iterator = map(double, bonuses)
Linguagem de código: Python ( python )
Ou você torna esse código mais conciso usando uma expressão lambda como esta:
bonuses = [100, 200, 300]
iterator = map(lambda bonus: bonus*2, bonuses)
Linguagem de código: Python ( python )
Depois de ter um iterador, você pode iterar os novos elementos usando um for
loop.
Ou você pode converter um iterador em uma lista usando a list()
função:
bonuses = [100, 200, 300]
iterator = map(lambda bonus: bonus*2, bonuses)
print(list(iterator))
Linguagem de código: Python ( python )
Mais exemplos de função Python map() com listas
Vejamos mais alguns exemplos de uso da função map() do Python com listas.
1) Usando a função Python map() para uma lista de strings
O exemplo a seguir usa a map()
função para retornar uma nova lista onde cada elemento é transformado no caso apropriado:
names = ['david', 'peter', 'jenifer']
new_names = map(lambda name: name.capitalize(), names)
print(list(new_names))
Linguagem de código: Python ( python )
Saída:
['David', 'Peter', 'Jenifer']
Linguagem de código: Python ( python )
2) Usando a função Python map() para uma lista de tuplas
Suponha que você tenha o seguinte carrinho de compras representado como uma lista de tuplas:
carts = [['SmartPhone', 400],
['Tablet', 450],
['Laptop', 700]]
Linguagem de código: Python ( python )
E você precisa calcular o valor do imposto para cada produto com imposto de 10% a 10%. Além disso, é necessário adicionar o valor do imposto ao terceiro elemento de cada item da lista.
A lista de retorno deve ser algo assim:
[['SmartPhone', 400, 40.0],
['Tablet', 450, 45.0],
['Laptop', 700, 70.0]]
Linguagem de código: Python ( python )
Para fazer isso, você pode usar a função map() para criar um novo elemento da lista e adicionar o novo valor do imposto a cada um, assim:
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))
Linguagem de código: Python ( python )
Resumo
- Use o map() do Python para chamar uma função em cada item de uma lista e retornar um iterador.