El método filter () construye un iterador a partir de elementos de un iterable para el que una función devuelve verdadero.
En palabras simples, el filter()
método filtra el iterable dado con la ayuda de una función que prueba que cada elemento en el iterable sea verdadero o no.
La sintaxis del filter()
método es:
filter (función, iterable)
filter () Parámetros
filter()
El método toma dos parámetros:
- función : función que prueba si los elementos de un iterable devuelven verdadero o
falso. - iterable : iterable que se filtrará, podría ser conjuntos, listas, tuplas o contenedores de cualquier iterador
Valor de retorno del filtro ()
filter()
El método devuelve un iterador que pasó la verificación de función para cada elemento en el iterable.
filter()
método es equivalente a:
# cuando la función está definida (elemento por elemento en iterable if function (elemento)) # cuando la función es None (elemento por elemento en iterable if element)
Ejemplo 1: ¿Cómo funciona filter () para una lista iterable?
# 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)
Salida
Las vocales filtradas son: aeio
Aquí, tenemos una lista de letras y necesitamos filtrar solo las vocales en ella.
Podríamos usar un bucle for para recorrer cada elemento en la lista de letras y almacenarlo en otra lista, pero en Python, este proceso es más fácil y rápido usando el filter()
método.
Tenemos una función filterVowels
que comprueba si una letra es vocal o no. Esta función se pasa al filter()
método con la lista de letras.
filter()
luego pasa cada letra al filterVowels()
método para verificar si devuelve verdadero o no. Al final, crea un iterador de los que devuelven verdaderos (vocales).
Dado que el iterador no almacena los valores en sí, lo recorremos e imprimimos las vocales una por una.
Ejemplo 2: ¿Cómo funciona el método filter () sin la función 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)
Salida
Los elementos filtrados son: 1 a Verdadero 0
Aquí, tenemos una lista aleatoria de números, cadenas y booleanos en randomList.
Pasamos randomList al filter()
método con el primer parámetro (función de filtro) como Ninguno.
Con la función de filtro como Ninguno, la función tiene como valor predeterminado la función de identidad, y cada elemento en randomList se verifica si es verdadero o no.
Cuando recorremos la lista filtrada final, obtenemos los elementos que son verdaderos: 1, a, True and '0'
('0' como cadena también es verdadero).