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