Sobes.tech
Junior

Como funciona a função filter() em Python?

sobes.tech IA

Resposta da IA

A função filter(function, iterable) cria um iterador a partir dos elementos de iterable para os quais function(item) retorna um valor verdadeiro (true).

Princípio de funcionamento:

  1. filter aceita dois argumentos: uma função (function) e um objeto iterável (iterable).
  2. Ela percorre cada elemento item em iterable.
  3. Para cada item, a função function(item) é chamada.
  4. Se o resultado de function(item) for verdadeiro (qualquer valor avaliado como True em um contexto booleano), item é incluído no iterador resultante.
  5. Se o resultado for falso (False, None, 0, coleções vazias), item é ignorado.
  6. filter retorna um iterador que gera os elementos filtrados de forma preguiçosa.

Exemplo de uso:

# Filtrar números pares
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers_iterator = filter(lambda x: x % 2 == 0, numbers)

# Converter o iterador em lista para exibir
print(list(even_numbers_iterator))

# Filtrar strings não vazias
strings = ["hello", "", "world", None, "python"]
non_empty_strings_iterator = filter(None, strings) # None como função é equivalente a identity (lambda x: x), verifica a verdade

print(list(non_empty_strings_iterator))

Diferença para geradores de listas:

  • filter retorna um iterador (execução preguiçosa), o que é eficiente para grandes volumes de dados.
  • Gerador de listas cria uma nova lista imediatamente (requer mais memória).
Característica filter() Gerador de listas
Tipo retornado Iterador Lista
Avaliação Preguiçosa (sob demanda) Ávida (imediatamente na criação)
Memória Eficiente para grandes dados Pode consumir muita memória
Sintaxe filter(func, iterable) [item for item in iterable if condition]