O método filter () constrói um iterador a partir de elementos de um iterável para o qual uma função retorna true.
Em palavras simples, o filter()
método filtra o iterável dado com a ajuda de uma função que testa cada elemento no iterável para ser verdadeiro ou não.
A sintaxe do filter()
método é:
filtro (função, iterável)
filter () Parâmetros
filter()
método leva dois parâmetros:
- função - função que testa se os elementos de um iterável retornam verdadeiro ou falso.
Se nenhum, a função assume como padrão a função Identidade - que retorna falso se algum elemento for falso - iterável - iterável que deve ser filtrado, pode ser conjuntos, listas, tuplas ou contêineres de quaisquer iteradores
Valor de retorno do filtro ()
filter()
método retorna um iterador que passou na verificação de função para cada elemento no iterável.
filter()
método é equivalente a:
# quando a função é definida (elemento para elemento em iterável se função (elemento)) # quando a função é Nenhum (elemento para elemento em iterável se elemento)
Exemplo 1: Como filter () funciona para lista iterável?
# list of letters letters = ('a', 'b', 'd', 'e', 'i', 'j', 'o') # function that filters vowels def filterVowels(letter): vowels = ('a', 'e', 'i', 'o', 'u') if(letter in vowels): return True else: return False filteredVowels = filter(filterVowels, letters) print('The filtered vowels are:') for vowel in filteredVowels: print(vowel)
Resultado
As vogais filtradas são: aeio
Aqui, temos uma lista de letras e precisamos filtrar apenas as vogais nela.
Poderíamos usar um loop for para percorrer cada elemento na lista de letras e armazená-lo em outra lista, mas em Python, esse processo é mais fácil e rápido usando o filter()
método.
Temos uma função filterVowels
que verifica se uma letra é vogal ou não. Esta função é passada para o filter()
método com a lista de letras.
filter()
método então passa cada letra para o filterVowels()
método para verificar se ele retorna verdadeiro ou não. No final, ele cria um iterador dos que retornam verdadeiros (vogais).
Como o iterador não armazena os valores em si, fazemos um loop e imprimimos as vogais uma a uma.
Exemplo 2: Como o método filter () funciona sem a função de filtro?
# random list randomList = (1, 'a', 0, False, True, '0') filteredList = filter(None, randomList) print('The filtered elements are:') for element in filteredList: print(element)
Resultado
Os elementos filtrados são: 1 a True 0
Aqui, temos uma lista aleatória de números, string e booleanos em randomList.
Passamos randomList para o filter()
método com o primeiro parâmetro (função de filtro) como Nenhum.
Com a função de filtro como None, o padrão da função é a função Identity, e cada elemento em randomList é verificado se é verdadeiro ou não.
Quando percorremos a FilterList final, obtemos os elementos que são verdadeiros: 1, a, True and '0'
('0' como string também é verdadeiro).