Filter em Python: Um Guia Completo

Ana Maria Gomes
6 minutos de leitura

Conteúdos do tutorial

A função filter em Python é uma ferramenta poderosa e versátil que permite filtrar elementos de uma sequência com base em uma condição específica. Neste tutorial, vamos explorar como utilizar a função filter, suas vantagens, desvantagens e como ela se compara a outras abordagens de filtragem em Python.

O que é a Função Filter em Python?

A função filter é uma função embutida em Python que permite filtrar elementos de uma sequência (como listas, tuplas, etc.) de acordo com uma função de filtro especificada. Esta função retorna um iterador que produz os elementos para os quais a função de filtro retorna True.

Sintaxe da Função Filter

A sintaxe básica da função filter é a seguinte:

filter(function, iterable)
  • function: Uma função que retorna True ou False para cada elemento da sequência.
  • iterable: A sequência (lista, tupla, etc.) a ser filtrada.

Exemplo Básico de Uso

Vamos começar com um exemplo simples para entender como a função filter funciona:

def meu_filtro(n):
    return n > 5

numeros = [1, 3, 6, 10]
filtro = filter(meu_filtro, numeros)
print(list(filtro))
# Saída: [6, 10]
Testar

Neste exemplo, a função meu_filtro retorna True para números maiores que 5. A função filter aplica esta função a cada elemento da lista numeros e retorna apenas os elementos que atendem à condição.

Usando Funções Lambda com Filter

Uma maneira comum de usar a função filter é com funções lambda, que são funções anônimas definidas em uma única linha. Isso pode tornar o código mais conciso e legível.

Exemplo com Função Lambda

numeros = [1, 2, 3, 4]
filtro = filter(lambda x: x > 2, numeros)
print(list(filtro))
# Saída: [3, 4]
Testar

Neste exemplo, a função lambda substitui a função meu_filtro, tornando o código mais compacto.

Comparação com Compreensão de Lista

Embora a função filter seja útil, muitas vezes ela pode ser substituída por compreensões de lista, que são mais idiomáticas em Python.

Exemplo com Compreensão de Lista

numeros = [1, 3, 6, 10]
maiores_que_cinco = [n for n in numeros if n > 5]
print(maiores_que_cinco)
# Saída: [6, 10]
Testar

A compreensão de lista acima realiza a mesma tarefa que a função filter, mas de uma maneira que muitos programadores Python acham mais legível.

Vantagens e Desvantagens de Usar Filter

Vantagens

  1. Simplicidade: A função filter pode simplificar o código, especialmente quando usada com funções lambda.
  2. Eficiência: filter retorna um iterador, o que pode ser mais eficiente em termos de memória do que criar uma nova lista.

Desvantagens

  1. Legibilidade: Para aqueles que não estão familiarizados com a função filter, o código pode ser menos legível do que uma compreensão de lista.
  2. Flexibilidade: Compreensões de lista são mais flexíveis e podem ser usadas para transformar e filtrar dados ao mesmo tempo.

Exemplos Avançados

Filtrando com Múltiplas Condições

Você pode usar a função filter para aplicar múltiplas condições de filtragem:

numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtro = filter(lambda x: x > 2 and x % 2 == 0, numeros)
print(list(filtro))
# Saída: [4, 6, 8, 10]
Testar

Combinando Filter com Map

A função filter pode ser combinada com a função map para aplicar transformações e filtragens em uma sequência:

numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtro = filter(lambda x: x > 2, numeros)
mapeamento = map(lambda x: x * 2, filtro)
print(list(mapeamento))
# Saída: [6, 8, 10, 12, 14, 16, 18, 20]
Testar

Conclusão

A função filter em Python é uma ferramenta poderosa para filtrar elementos de uma sequência com base em uma condição específica. Embora possa ser substituída por compreensões de lista em muitos casos, filter ainda é útil, especialmente quando combinada com funções lambda e map. Compreender como e quando usar filter pode ajudar a escrever código Python mais eficiente e legível.

Experimente usar a função filter em seus próprios projetos e veja como ela pode simplificar suas tarefas de filtragem!

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse: