A função `map()` do Python é usada para aplicar uma função a todos os elementos do iterável especificado e retornar um objeto de mapa. O objeto de mapa em Python é um iterador, portanto, podemos iterar sobre seus elementos. Também podemos converter o objeto de mapa em objetos de sequência, como lista, tupla, etc., usando suas funções de fábrica.
Função map() em Python
A sintaxe da função map() em Python é:
map(function, iterable, ...)
Podemos passar vários argumentos iteráveis para a função map(), nesse caso, a função especificada deve ter tantos argumentos quanto iteráveis. A função será aplicada a esses elementos iteráveis em paralelo. Com vários argumentos iteráveis, o iterador de mapa para quando o iterável mais curto é esgotado.
Exemplo da função map() em 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 do objeto de entrada. Também estou definindo uma função de utilidade para imprimir os elementos do iterador. A função imprimirá os elementos do iterador com espaços 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)
Resultado:
<class 'map'>
A B C
Python map() com tupla
# map() com tupla
map_iterator = map(to_upper_case, (1, 'a', 'abc'))
print_iterator(map_iterator)
Resultado:
1 A ABC
Python map() com lista
map_iterator = map(to_upper_case, ['x', 'a', 'abc'])
print_iterator(map_iterator)
Resultado:
X A ABC
Convertendo map para lista, tupla, conjunto
Já que o objeto map é um iterador, podemos passá-lo como argumento para os métodos de fábrica para criar uma lista, tupla, conjunto 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)
Resultado:
['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)
Resultado:
2 4 6 8
Python map() 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)
Resultado: 5 12 21 32
Note que nossa função tem dois argumentos. O iterador de saída do map é o resultado da aplicação desta 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)
Resultado:
5 12 21 32
5 12 21 32
Então, quando os argumentos têm tamanhos diferentes, a função map é 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)
Resultado:
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 de Python em nosso [Repositório do GitHub]().
Referência: [Documentação Oficial]()
Source:
https://www.digitalocean.com/community/tutorials/python-map-function