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:
filteraceita dois argumentos: uma função (function) e um objeto iterável (iterable).- Ela percorre cada elemento
itememiterable. - Para cada
item, a funçãofunction(item)é chamada. - Se o resultado de
function(item)for verdadeiro (qualquer valor avaliado comoTrueem um contexto booleano),itemé incluído no iterador resultante. - Se o resultado for falso (
False,None, 0, coleções vazias),itemé ignorado. filterretorna 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:
filterretorna 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] |