Com a função Python filter(), você filtra um iterável com base em uma condição específica e cria um iterador que consiste apenas em valores verificados. Ela também funciona com strings ou para remover valores nulos.

O que é a função Python filter()?

Com a função Python filter(), é possível aplicar uma condição a um iterável e assim selecionar apenas aqueles elementos que a atendem. Esses elementos são então retornados como iterador Python. A condição é considerada atendida se o valor não for 0 ou false. Embora existam outras opções para filtrar, por exemplo, uma lista ou um dicionário, a função Python filter() pode ser usada de maneira particularmente eficiente. A função cria um objeto que referencia o iterável original e fornece a função aplicada e um índice. Ela funciona de maneira significativamente mais econômica em termos de espaço do que outras opções.

Sintaxe e parâmetros de Python filter()

A sintaxe da função Python filter() é a seguinte:

filter(function, iterable)
python

A função Python filter() tem dois parâmetros:

  • function: Este argumento especifica uma função que será aplicada a cada elemento dentro do iterável. Ela retorna um valor booleano (“true” ou “false”).
  • iterable: Este parâmetro especifica a sequência que será filtrada pela função Python filter(). Pode ser uma lista, um conjunto, outro iterável ou uma tupla Python.

Assim, cada elemento do iterável é verificado quanto à condição. Se a condição for “true”, o elemento é considerado na nova sequência. Se o objeto não atender à condição, ele não será incluído. A forma exata de funcionamento será mostrada nos próximos tópicos com alguns exemplos práticos.

Exemplo de Python filter()

No nosso primeiro exemplo, usamos uma série de números e queremos instruir o sistema a considerar apenas valores acima de 10. Para isso, usamos a função Python filter(). O código correspondente é:

numbers = [3, 7, 9, 11, 17, 24, 25, 38, 40, 42]
def condition(x):
    return x > 10
filtered_numbers = filter(condition, numbers)
filtered_numbers_list = list(filtered_numbers)
print(filtered_numbers_list)
python

A saída será a lista:

[11, 17, 24, 25, 38, 40, 42]
python

Python filter() com strings

filter() também funciona com strings Python. No exemplo a seguir, instruímos o sistema a considerar apenas as vogais. O código é:

letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
def is_vowel(letter):
    vowels = ['a', 'e', 'i', 'o', 'u']
    if letter in vowels:
        return True
    else:
        return False
filtered_vowels = filter(is_vowel, letters)
filtered_vowels_tuple = tuple(filtered_vowels)
print(filtered_vowels_tuple)
python

A saída foi armazenada como uma tupla:

('a', 'e', 'i')
python

Combinar Python filter() e lambda

É possível combinar filter() com a função Python Lambda. Trata-se de uma função anônima que é usada principalmente localmente. Para nosso exemplo, escolhemos uma sequência de números e instruímos o sistema a considerar apenas os números pares. O código é:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new_iterator = filter(lambda x: (x % 2 == 0), numbers)
even_numbers = list(new_iterator)
print(even_numbers)
python

Obtivemos a seguinte saída:

[2, 4, 6, 8, 10]
python

Combinar Python filter() com None

Se você passar None como o primeiro argumento para a função Python filter(), o sistema será instruído a filtrar apenas valores falsy. Valores falsy são aqueles que, de acordo com o princípio booleano, são avaliados como False, incluindo 0, False, None, listas e strings vazias, entre outros. Para nosso exemplo, escolhemos uma lista de valores diversos. Estes são inteiros, vazios ou valores booleanos. Então usamos a função Python filter() com None e filtramos os valores que não atendem nossa condição. O código é:

values = [1, 2, 3, 'x', 0, 4, True, False, 5]
new_iterator = filter(None, values)
new_values = list(new_iterator)
print(new_values)
python

Nossa saída será:

[1, 2, 3, 'x', 4, True, 5]
python

Remover strings vazias com Python filter()

Se você quiser remover strings vazias, pode usar a função Python filter(). O comando correspondente é assim:

sentence = ['This', ' ', 'is', 'an', ' ', 'example', ' ']
sentence = list(filter(None, sentence))
print(sentence)
python

Para a saída, as strings vazias serão filtradas e apenas aquelas com um valor serão consideradas. O resultado será:

['This', 'is', 'an', 'example']
python
Dica

Reconhecimento automático de frameworks, staging facilitado e uma série de funcionalidades: com o Deploy Now da IONOS, você não só conta com uma infraestrutura confiável, como também faz a implantação do seu site ou app diretamente pelo GitHub. Escolha o plano adequado para as suas necessidades!

Este artigo foi útil?
Ir para o menu principal