Map em Python
Map em Python é uma função interna que aplica uma função a todos os elementos de um iterável (como uma lista, tupla ou string). A forma mais tradicional de aplicar uma função a todos os elementos de uma lista ou outros iteráveis é com um loop. Isso está ilustrado no exemplo abaixo.
# Aplica função em uma lista usando for loop
def calcula_quadrado(item):
res = item * item
return res
lista = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
lista_ao_quadrado = []
for item in lista:
lista_ao_quadrado.append(calcula_quadrado(item))
print(lista_ao_quadrado)
# resultado: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Com map, podemos executar a mesma operação dispensando o uso do loop. Para isso, a função map aceita dois argumentos. O primeiro argumento é uma função que será aplicada a cada elemento de um iterável. O segundo argumento é um iterável (como uma lista) contendo os elementos que devem ser transformados.
# Aplica função em uma lista usando map
def calcula_quadrado(item):
res = item * item
return res
lista = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
lista_ao_quadrado_map = list(map(calcula_quadrado, lista))
print(lista_ao_quadrado_map)
# resultado: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Map e Iteradores
A função map em Python não armazena todos os resultados de uma só vez. Ao invés disso, ela cria um iterador que gera os elementos transformados sob demanda. Isso é eficiente em termos de memória para grandes conjuntos de dados. Mas, quando desejamos obter o iterável inteiro transformado pela função, como no exemplo acima, basta converter o iterador em uma lista usando list(map(…)) ou outro construtor como set.
Map pode mapear qualquer objeto chamável, incluindo funções internas, funções definidas pelo usuário ou funções lambda (funções anônimas). Os resultados obtidos são exatamente iguais aos obtidos com um loop. No entanto, a abordagem com a função map é mais concisa e evita loops explícitos.
Em termos de eficiência, map é implementado em C, uma linguagem compilada conhecida por ter desempenho melhor do que os códigos interpretados do Python. Isso pode acelerar um pouco os códigos em comparação com implementações usando loops explícitos.
Veja também:
Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.