0

Entenda o uso da função map() de uma vez por todas

#Python
Jéssica Melo
Jéssica Melo

Antes de falarmos propriamente sobre o map() é interessante que você entenda os conceitos de laços de repetiçãocoleções e funções.


Estrutura do map():

        map(function, iterable, [iterable 2, iterable 3, …])

função map() pode ser um calo no sapato para alguns iniciantes da programação. Alguns motivos incluem: não ser tão usual vê-lo em cursos mais “curtos” da web, geralmente ser explicado de uma maneira técnica demais, falta de entendimento de outros conceitos da programação que ajudariam muito a entender o map(), embora, é claro, tenhamos um acervo bem vasto de artigos e sites sobre esse assunto na internet. Meu objetivo com esse post é tentar te mostrar da forma mais simples possível o uso dessa função.

Basicamente, podemos usar a função integrada do Python, map(), para aplicar uma função a cada item em um iterável (listas, dicionários, tuplas, etc…). Iterável é algo que pode ser percorrido um a um, caso não conheça esse termo. Então, imagine que temos uma lista de números do tipo string, como:

         numeros = [‘12’, ‘5’, ‘10’, ‘17’, ‘20’, ‘35’]

E então, desejamos transformar todos esses números que estão em string para o tipo inteiro. Para tal é só aplicarmos o map() dessa forma:

numeros_int = map(int, numeros)
print(numeros_int)

>>>
<map object at 0x7fda337d7710>

Explicação do código: Dentro do map() nós passamos a função que nós queremos que seja aplicada. Nesse caso foi a função int(), visto que nosso objetivo é transformar cada número que está dentro da lista do tipo string para o tipo inteiro. Após a vírgula, nós colocamos a variável que está guardando o iterável, que é a lista números. Ou seja, para cada número ali dentro o map() está aplicando a função int().

Como retorno temos um objeto map (um iterador), que podemos usar em outras partes do nosso programa. <map object at 0x7fda337d7710>


[Exemplo 2] E se quiséssemos criar uma função que elevasse elementos de uma tupla ao quadrado e nos retornasse uma lista ao final? Simples!

def quadrado(x):
  return x ** 2

numeros = (2, 3, 4, 5)
resultado = map(quadrado, numeros)
print(list(resultado))
>>>
[4, 9, 16, 25]

Explicação do código: Primeiro criamos uma função para retornar x elevado ao quadrado. Depois criamos a variável números que é uma tupla de números inteiros e nosso objetivo é que cada número dessa tupla seja elevado ao quadrado. Então na variável resultado atribuímos o map() e ele recebe a função quadrado e após a vírgula o iterável que queremos aplicar a função quadrado que nesse caso é a tupla numeros. Para que possamos ver o resultado desse código em uma lista é só colocarmos o resultado dentro da função list().


[Exemplo 3] Aqui usaremos duas listas e aplicamos a função de somar os números contidos nessas listas.

def soma_listas(x, y):
  return x + y

numeros1 = [1, 2, 3]
numeros2 = [4, 5, 6]
resultado = map(soma_listas, numeros1, numeros2)
print(list(resultado))
>>>
[5, 7, 9]

Explicação do código: Criamos a função soma_listas que somará os parâmetros x e y. Depois criamos as listas numeros1 e numeros2 que contém os números que queremos somar. Então atribuímos ao map() a função soma_listas() e os dois iteraveis que queremos que sejam somados. Prontinho.


[Exemplo 4] Vamos fazer mais um exemplo utilizando a função lambda agora para o mesmo caso acima. Se você não tem conhecimento em lambda pode parecer confuso, mas lembre-se que ela é como a função def com a diferença que ela não recebe um nome, por isso, ela se chama função anônima :)

numeros = (2, 3, 4, 5)
quadrado = list(map(lambda x: x ** 2, numeros))
print(quadrado)

>>>
[4, 9, 16, 25]

E aí? Conseguiu entender de uma vez por todas esse cara? Eu espero que sim, tentei explicar da forma mais minuciosa possível. Lembre-se que ele é muito utilizado na plataforma de desafios Uri Online Judge.

0
1

Comentários (1)

0
F

Felipe Silva

15/06/2021 05:13

Perfeito, Jéssica. Claro demais! Muito obrigado!

Apaixonada por tecnologia, jogos e board games. 🖥 🎲

Brasil