Map e Filter no Python – Diferenças e Para que Serve

Você já conhece as estruturas map e filter no Python? Elas são duas estruturas muito úteis e vão deixar seus códigos ainda menores!

O map aplica uma função a todos os itens de uma lista e devolve os itens já alterados; o filter aplica uma condição e devolve só os itens que passaram, sem alterá-los. Os dois substituem o for e recebem a função sem parênteses mais a lista: use list() para ver o resultado.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

O que você aprende neste vídeo

Resposta rápida: Sobre a mesma lista de preços e o mesmo corte de 6.000, a aula põe os dois lado a lado: o map devolve todos os preços, com 10% a mais nos que passam do corte, e o filter devolve só os que passam, sem alterá-los: a função dele responde apenas verdadeiro ou falso.

Neste vídeo (9 min):

  • 1:36 - Apresenta a função do exemplo: recebe um preço e, se ele passa de 6.000, aplica um aumento de 10% (o fator 1,1); senão, mantém o preço original.
  • 2:30 - Mostra o caminho intuitivo, um for que passa por cada preço e aplica a função, e diz que o map dispensa esse for.
  • 3:02 - Monta o map com duas informações: o nome da função, sem os parênteses, e a lista que ele vai percorrer.
  • 4:45 - Com list na frente, roda: 5.000 e 2.000 ficam como estavam, e os dois preços acima de 6.000 sobem para 9.900 e 16.500.
  • 5:06 - Explica a diferença pelo objetivo: para editar os itens e ficar com a lista completa, map; para pegar só os itens que atendem a uma condição, filter.
  • 5:50 - Monta o filter do mesmo jeito, com a função sem parênteses, a lista e list na frente; a diferença está na função.
  • 7:12 - Com a função que devolve verdadeiro acima de 6.000 e falso no resto, o filter devolve só 9 mil e 15 mil, os preços acima do corte, sem aumento.
  • 7:53 - Fecha com outros usos, como converter em float números guardados como texto numa lista, ou aplicar uma edição aos itens de um dicionário.

Trechos do vídeo:

  • A função usada no map tem de receber um parâmetro, porque o map passa a ela cada item, um por vez; e o que ele percorre pode ser uma lista, um dicionário, uma tupla ou qualquer outra coisa que se percorra.
  • O resultado do map não é uma lista, e sim um objeto map: para ver e usar o resultado como lista, ele vai dentro de list.
  • Guardar o resultado do map ou do filter com o mesmo nome da lista original é escolha, e não obrigação: ele pode ir para uma lista com outro nome.

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Fala Impressionadores! Na aula de hoje eu quero falar sobre Map e Filter no Python!

Para te mostrar como funciona o Map e o Filter no Python vou utilizar um exemplo simples, mas que deixa muito visível como eles funcionam.

Então qual a diferença do map e do filter?

Ícone PythonPython Impressionador

Você vai aprender a linguagem de Programação que mais cresce no Mundo para fazer automações incríveis, desenvolver sites, fazer análises de dados, trabalhar com Ciência de Dados, Inteligência Artificial, mesmo que você nunca tenha tido nenhum contato com Programação na vida.

Começar agoraSeta para a direita
Fundo PythonTelas Python
Luz Python

A ideia inicial deles é aplicar uma função em uma lista, evitando o uso da estrutura de repetição for.

O map vai editar os itens da lista, ou seja, a função onde será aplicada já faz alterações nos itens.

Enquanto o filter vai filtrar itens em uma lista, mas vai retornar apenas verdadeiro ou falso, nele, não vamos fazer nenhuma alteração na lista.

Resumo:

Então, em resumo, a diferença é que no map passamos pela lista e já podemos fazer as alterações dos itens, já no filter vamos retornar se é verdadeiro ou falso sem fazer alterações!

Exemplo:

Lista e cálculo de aumento.
Lista e cálculo de aumento.

Imagine que nós queremos fazer uma alteração em cada item dessa lista, quando estamos começando a programar podemos intuitivamente achar que o melhor é usar uma estrutura de repetição For para percorrer a lista inteira.

O for poderia ser usado neste caso?

Sim, poderia, mas como temos uma função que está efetuando um aumento em uma lista, ao invés do for podemos usar o map.

Map:

O map essencialmente vai precisar dessas duas informações, o cálculo ou função que ele vai aplicar e a lista de itens que ele vai percorrer.

Preços_produtos = map(aplicar_aumento, preço_produtos)

Obs. Para printar vamos ter que acrescentar o list, porque o resultado no map é um map object e não uma lista Python:

Preços_produtos = list(map(aplicar_aumento, preço_produtos))

Dessa forma vamos conseguir o resultado assim como no for, mas esta função costuma ser mais prática e rápida.

Map
Map

Função filter:

A função que temos nos retorna alguns valores, certo? Esses valores estão submetidos a uma condição que pode alterar ou não alguns desses valores, então, os que retornam positivo → True, serão os resultados mostrados no filter.

O modo como essas duas estruturas funcionam é o mesmo, precisamos passar na estrutura a função sem os parênteses e a lista onde vai ser feita a aplicação, para o resultado aparecer como lista do Python o list deve ser usado nos dois códigos da mesma forma.

Filter:

Filter
Filter

Perceba que a principal diferença está na função, no caso do filter o resultado é somente dos valores que atendem a condição → true e mesmo atendendo a condição o valor é exibido sem alteração.

Essas duas funções são muito úteis para quando estamos trabalhando com um volume grande de informações, listas, dicionários, tuplas, podemos usar para filtrar por tipo ou aplicar diversas edições usando o map.

Resumo:

Quando queremos a lista completa editando as informações que temos dentro dela, vamos usar o map.

Quando queremos filtrar essa lista para pegar os itens que correspondem a uma condição vamos usar o filter.

Ambas percorrem toda a lista como o For teria feito, mas, mais rápido.

Perguntas frequentes

1. Qual a diferença entre map e filter no Python?

O map percorre a lista aplicando uma função que altera cada item, e é usado quando você quer a lista completa, mas modificada, como aplicar um aumento em preços. O filter percorre a lista testando uma condição e devolve apenas os itens que retornam verdadeiro, sem alterar nenhum valor.

2. Por que preciso usar list() com map e filter?

Porque o retorno das duas funções não é uma lista do Python, e sim um objeto (map object). Ao imprimir direto você vê o objeto, não os valores. Envolvendo a chamada em list(), como list(map(aplicar_aumento, preço_produtos)), o resultado aparece como uma lista normal.

3. Como usar o map para aplicar um aumento em uma lista de preços?

Crie a função que faz o cálculo do aumento e passe o nome dela, sem parênteses, junto da lista: list(map(aplicar_aumento, preço_produtos)). O map chama a função para cada item e devolve todos os preços já reajustados, no mesmo formato que um for entregaria, com menos código.

4. Map e filter funcionam com dicionários e tuplas?

Sim. As duas funções trabalham com qualquer sequência de itens, como listas, dicionários e tuplas, e são especialmente úteis com volumes grandes de informação. A lógica não muda: o map edita os itens que percorre e o filter seleciona os que atendem à condição.

Conclusão – Map e Filter no Python

Você já conhecia o filter e o map? Nesta aula nosso objetivo foi mostrar essas duas funções.

Quando se começa a aprender Python é normal entrar no automático e usar sempre o For quando se quer percorrer uma lista.

Esta aula é para mostrar que temos outras opções, até mais rápidas!

Por isso a explicação está detalhada e com exemplos, para você aprender essas estruturas e aproveitar novos recursos.

Espero que tenham gostado! Até mais. Abraço,

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?