Função map() do Python

A função map() do Python é usada para aplicar uma função em todos os elementos do iterável especificado e retorna um objeto de mapa. O objeto map do Python é um iterador, então podemos iterar sobre seus elementos. Também podemos converter o objeto map em objetos sequenciais, como lista, tupla, etc., usando suas funções de fábrica.

A função map() do Python

A sintaxe da função map() do Python é:

map(function, iterable, ...)

Podemos passar vários argumentos iteráveis para a função map(), nesse caso, a função especificada deve ter exatamente a mesma quantidade de argumentos. A função será aplicada aos elementos iteráveis em paralelo. Com vários argumentos iteráveis, o iterador map pára quando o iterável mais curto é esgotado.

Exemplo da função map() do Python

Vamos escrever uma função para ser usada com a função map().

def to_upper_case(s):
    return str(s).upper()

É uma função simples que retorna a representação em maiúsculas da string de entrada. Também estou definindo uma função utilitária para imprimir os elementos do iterador. A função imprimirá os elementos do iterador com espaço em branco e será reutilizada em todos os trechos de código.

def print_iterator(it):
    for x in it:
        print(x, end=' ')
    print('')  # for new line

Vamos dar uma olhada no exemplo da função map() com diferentes tipos de iteráveis.

Python map() com string

# map() com string
map_iterator = map(to_upper_case, 'abc')
print(type(map_iterator))
print_iterator(map_iterator)

Output:

<class 'map'>
A B C 

Python map() com tuple

# map() com tuple
map_iterator = map(to_upper_case, (1, 'a', 'abc'))
print_iterator(map_iterator)

Output:

1 A ABC 

Python map() com list

map_iterator = map(to_upper_case, ['x', 'a', 'abc'])
print_iterator(map_iterator)

Output:

X A ABC 

Convertendo map para list, tuple, set

Dado que o objeto map é um iterador, podemos passá-lo como argumento para os métodos de fábrica para criar uma lista, tuple, set, etc.

map_iterator = map(to_upper_case, ['a', 'b', 'c'])
my_list = list(map_iterator)
print(my_list)

map_iterator = map(to_upper_case, ['a', 'b', 'c'])
my_set = set(map_iterator)
print(my_set)

map_iterator = map(to_upper_case, ['a', 'b', 'c'])
my_tuple = tuple(map_iterator)
print(my_tuple)

Output:

['A', 'B', 'C']
{'C', 'B', 'A'}
('A', 'B', 'C')

Python map() com lambda

Podemos usar funções lambda com map() se não quisermos reutilizá-las. Isso é útil quando nossa função é pequena e não queremos definir uma nova função.

list_numbers = [1, 2, 3, 4]

map_iterator = map(lambda x: x * 2, list_numbers)
print_iterator(map_iterator)

Saída:

2 4 6 8 

Python map() com múltiplos argumentos

Vamos ver um exemplo de uso da função map() com múltiplos argumentos iteráveis.

# map() com múltiplos argumentos iteráveis
list_numbers = [1, 2, 3, 4]
tuple_numbers = (5, 6, 7, 8)
map_iterator = map(lambda x, y: x * y, list_numbers, tuple_numbers)
print_iterator(map_iterator)

Saída: 5 12 21 32 Observe que nossa função tem dois argumentos. O iterador de mapa de saída é o resultado da aplicação dessa função aos dois elementos iteráveis em paralelo. Vamos ver o que acontece quando os iteráveis têm tamanhos diferentes.

# map() com múltiplos argumentos iteráveis de tamanhos diferentes
list_numbers = [1, 2, 3, 4]
tuple_numbers = (5, 6, 7, 8, 9, 10)
map_iterator = map(lambda x, y: x * y, list_numbers, tuple_numbers)
print_iterator(map_iterator)

map_iterator = map(lambda x, y: x * y, tuple_numbers, list_numbers)
print_iterator(map_iterator)

Saída:

5 12 21 32 
5 12 21 32 

Portanto, quando os argumentos têm tamanhos diferentes, a função de mapa é aplicada aos elementos até que um deles seja esgotado.

Python map() com função None

Vamos ver o que acontece quando passamos a função como None.

map_iterator = map(None, 'abc')
print(map_iterator)
for x in map_iterator:
    print(x)

Saída:

Traceback (most recent call last):
  File "/Users/pankaj/Documents/github/journaldev/Python-3/basic_examples/python_map_example.py", line 3, in <module>
    for x in map_iterator:
TypeError: 'NoneType' object is not callable

Você pode verificar o script Python completo e mais exemplos em Python em nosso Repositório no GitHub.

Referência: Documentação Oficial

Source:
https://www.digitalocean.com/community/tutorials/python-map-function