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

Aprenda como usar a função map() do Python. Domine a aplicação de funções a iteráveis ​​sem escrever loops e compare o mapa com a compreensão da lista.

Experimente esta solução no Editor

Visão geral

Ao processar coleções de dados, muitas vezes você precisará aplicar uma transformação específica a cada item em um iterável. Por exemplo, converter uma lista de números de string em números inteiros ou normalizar uma matriz de strings de banco de dados convertendo-os em letras minúsculas. Em vez de escrever loops `for` detalhados, Python fornece uma ferramenta integrada chamada `map()`.

A função `map(function, iterable)` aceita uma função de transformação e um iterável como argumentos. Ele aplica a função a cada elemento do iterável e retorna um objeto iterador (um objeto `mapa`). Como é retornado como um iterador, os cálculos são executados lentamente: os elementos só são processados ​​conforme você itera sobre eles, o que economiza memória para grandes conjuntos de dados.

Para obter uma representação de lista do objeto do mapa imediatamente, você deve converter o resultado usando o construtor `list()`: `list(map(func, data))`. Você pode passar qualquer função padrão, função de biblioteca padrão (como `str` ou `len`) ou funções anônimas personalizadas declaradas com a palavra-chave `lambda` diretamente para `map()` para execução inline.

Saída de código e execução

Este script demonstra a modificação de coleções usando a função map() com transformações de string, mapeando itens de lista para números e usando retornos de chamada lambda.

map_function.py
Experimente no Editor
# 1. Map string conversion over a list of numbers
numbers = [1, 2, 3, 4]
string_numbers = list(map(str, numbers))
print("Mapped to strings:", string_numbers)

# 2. Square numbers using a lambda function inside map()
squared = list(map(lambda x: x**2, numbers))
print("Squared numbers:", squared)

# 3. Apply custom logic function to items
def normalize_name(name):
    return name.strip().capitalize()

names = ["  alice", "BOB  ", " charlie "]
clean_names = list(map(normalize_name, names))
print("Clean names list:", clean_names)
Saída terminal
Mapped to strings: ['1', '2', '3', '4']
Squared numbers: [1, 4, 9, 16]
Clean names list: ['Alice', 'Bob', 'Charlie']

Implementação passo a passo

  • Identifique a função de transformação que você deseja aplicar a cada elemento da coleção.
  • Chame map(function_name, iterable) para criar um iterador lento de elementos transformados.
  • Coloque a chamada map() dentro de list() se você precisar acessar todos os elementos como uma lista padrão imediatamente.
  • Combine map() com funções lambda para transformações inline rápidas e únicas.

Perguntas frequentes

Map() é melhor que compreensão de lista?

As compreensões de lista são geralmente consideradas mais legíveis e pitônicas pela comunidade. No entanto, map() pode ser mais rápido ao aplicar uma função integrada existente (como map(str, list)) porque executa loops de código C otimizados.

map() pode aceitar vários iteráveis?

Sim! Se a função de transformação receber vários argumentos, você poderá passar vários iteráveis ​​para map(). Por exemplo, map(lambda x, y: x + y, list1, list2) adicionará elementos aos pares.

Tópicos Relacionados

Recursos Python recomendados

Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.