Como transformar elementos de lista com a função Python map()

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 bonuseslista 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 forloop.

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.

Deixe um comentário

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