Filter em Python
A função filter em Python é uma ferramenta interna que permite processar um iterável (como uma lista, tupla, set) e criar um novo iterador que contém apenas elementos que atendem a uma determinada condição. Ou seja, filter em Python atua essencialmente como um mecanismo de filtragem que seleciona elementos a partir de uma condição booleana.
Filter em Código
A função filter em Python recebe dois argumentos. O primeiro argumento é uma função que define os critérios de filtragem. A função usada para filtrar pode ser qualquer objeto chamável. Isso inclui funções internas, funções definidas pelo usuário ou funções lambda (funções anônimas). Essa função determina quais elementos devem ser mantidos. Ela deve retornar True para elementos que você deseja manter e False para elementos que devem ser descartados. O segundo argumento é o iterável que será filtrado. Veja como isso pode ser implementado. Primeiro, implementaremos um filtro de maneira tradicional, usando um condicional:
# forma tradicional de realizar filtragem com condicional
nomes = ["Ana", "Joana", "Clara", "Aline"]
nomes_iniciados_em_a = []
for nome in nomes:
if nome[0] == "A":
nomes_iniciados_em_a.append(nome)
print(nomes_iniciados_em_a) # Resultado: ['Ana', 'Aline']
Agora, implementaremos a mesma filtragem usando filter:
# Filtragem usando filter
def inicia_com_a(nome): # precisa definir uma função
return nome[0] == "A"
nomes_iniciados_em_a_filter = list(filter(inicia_com_a, nomes)) # usa list para obter a lista completa
print(nomes_iniciados_em_a_filter) # Resultado: ['Ana', 'Aline']
Nos exemplos, usamos uma lista de nomes como entrada. A filtragem aplicada em ambos os casos retorna os nomes iniciados em A. Nos dois casos, obtemos o mesmo resultado. No entanto, a abordagem com filter é mais concisa e evita loops e condicionais explícitos.
Filter e Iteradores
Assim como a função map, o uso de filter em Python não retorna o iterável completo ou armazena todos os resultados de uma só vez. Ao invés disso, ela retorna um iterador que produz os elementos que passaram pela condição de filtragem sob demanda. A vantagem desse processo é que ele é eficiente em termos de memória, especialmente para grandes conjuntos de dados. Mas você pode converter o iterador facilmente em uma lista usando list(filter(…)) se necessário, como feito no exemplo acima.
Veja também:
Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.