Python filter(): Como filtrar iteráveis em Python
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)pythonA 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 Pythonfilter(). 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)pythonA saída será a lista:
[11, 17, 24, 25, 38, 40, 42]pythonPython 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)pythonA saída foi armazenada como uma tupla:
('a', 'e', 'i')pythonCombinar 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)pythonObtivemos a seguinte saída:
[2, 4, 6, 8, 10]pythonCombinar 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)pythonNossa saída será:
[1, 2, 3, 'x', 4, True, 5]pythonRemover 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)pythonPara 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']pythonReconhecimento 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!

