Como usar a função map() do Python

Resumo: neste tutorial, você aprenderá como usar a função map() do python com listas.

Introdução à função map() do Python

Ao trabalhar com uma lista (ou uma 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 dobrar todos os números na lista bonuses a seguir:

bonuses = [100, 200, 300]

Para fazer isso, você pode usar um loop for para iterar sobre os elementos, dobrar 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)

Saída:

[200, 400, 600]

O Python fornece uma maneira mais agradável de fazer esse tipo de tarefa usando a função interna map().

A função map() itera sobre todos os elementos em uma lista (ou uma tupla), aplica uma função a cada um e retorna um novo iterador dos novos elementos.

O seguinte mostra a sintaxe básica da função map():

iterator = map(fn, list)

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 função map(), não apenas uma lista ou tupla.

De volta ao exemplo anterior, para usar a função map(), primeiro você define uma função que dobra um bônus e depois usa a função map() da seguinte forma:

def double(bonus):
    return bonus * 2


bonuses = [100, 200, 300]

iterator = map(double, bonuses)

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)

Depois de ter um iterador, você pode iterar sobre os novos elementos usando um loop for.

Ou você pode converter um iterador em uma lista usando a função list():

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

Mais exemplos da função map() do Python com listas

Vamos dar mais alguns exemplos de uso da função map() do Python com listas.

1) Usando a função map() do Python para uma lista de strings

O exemplo a seguir usa a função map() 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))

Saída:

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

2) Usando a função map() do Python com 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]]

E você precisa calcular o valor do imposto para cada produto com 10% de imposto de 10%. Além disso, você precisa adicionar o valor do imposto ao terceiro elemento de cada item da lista.

A lista de retorno deve ser algo como isto:

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

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))

Resumo

  • Use a função map() para chamar uma função em cada item de uma lista e retornar um iterador.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *