Con la función filter() de Python, puedes filtrar un iterable según una de­te­r­mi­na­da condición y crear así un nuevo iterador que solo conste de valores co­m­pro­ba­dos. Esto también funciona con cadenas o para eliminar valores nulos.

¿Qué es la Python Filter() Function?

Con la función filter() de Python es posible aplicar una condición a un iterable y así se­le­c­cio­nar solo aquellos elementos que la cumplan. Estos vuelven a salir como iterator. Se considera que la condición se cumple si no es “0” o “False”. Aunque existen otras opciones para filtrar una lista o un di­c­cio­na­rio, por ejemplo, en Python se puede utilizar filter() de forma es­pe­cia­l­me­n­te eficaz. La función solo crea un objeto que hace re­fe­re­n­cia al iterable de salida y solo pro­po­r­cio­na la función pro­po­r­cio­na­da y un índice. Por tanto, ocupa mucho menos espacio que otras opciones.

Sintaxis y pa­rá­me­tros

La sintaxis de filter() es la siguiente:

filter(function, iterable)
python

Por lo tanto, filter() tiene dos pa­rá­me­tros:

  • function: este argumento es­pe­ci­fi­ca una función que se utiliza para cada elemento dentro del iterable. Devuelve un valor booleano (“True” o “False”).
  • iterable: este parámetro es­pe­ci­fi­ca la secuencia a filtrar por la función filter(). Puede ser, por ejemplo, una lista es­pe­cí­fi­ca, un conjunto, otro iterable o una tupla de Python.

Por lo tanto, la función comprueba cada elemento del iterable para ver si se cumple la condición. Si es “True”, el elemento se tiene en cuenta para la nueva secuencia. Si el objeto no cumple la condición, deja de aparecer en la lista. En los si­guie­n­tes apartados te mostramos cómo funciona exac­ta­me­n­te con algunos ejemplos.

Ejemplo de filter() de Python

En nuestro primer ejemplo, uti­li­za­mos una serie de números y nos gustaría instruir al sistema para que solo considere los valores que son mayores que 10. Para ello uti­li­za­mos filter(). El código co­rre­s­po­n­die­n­te sería el siguiente:

valores = [3, 7, 9, 11, 17, 24, 25, 38, 40, 42] 
def funcion(x): 
    return x > 10 
 
números = filter(función, valores) 
lista_números = list(números) 
print(lista_números)
python

A co­n­ti­nua­ción, recibimos esta nueva lista como resultado:

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

La función filter() con cadenas

Por supuesto, filter() también funciona con cadenas de Python. En el siguiente ejemplo, ordenamos al sistema que solo tenga en cuenta las vocales. Este es el código indicado:

valores = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] 
 
def filtro_vocales(letra): 
    vocales = ['a', 'e', 'i', 'o', 'u'] 
    if letra en vocal: 
        return True 
    else: 
        return False 
 
vocales_filtradas = filter(vocales_filtradas, valores) 
vocales = tupla(vocales_filtradas) 
print(vocales)
python

Hemos co­n­ve­r­ti­do el resultado en una tupla. Su aspecto es el siguiente:

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

Co­m­bi­na­ción con lambda

Es posible combinar la función filter() de Python con una función lambda. Se trata de una función anónima que se utiliza pri­n­ci­pa­l­me­n­te a nivel local. Para nuestro ejemplo, se­le­c­cio­na­mos una secuencia de números y ordenamos al sistema que solo considere los números pares. Este es el código:

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

Ob­te­n­dre­mos el siguiente resultado:

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

La función filter() con None

Si pasas None como primer argumento a filter(), el sistema recibe in­s­tru­c­cio­nes de filtrar solo valores “falsy”. El término “falsy” se utiliza para describir valores que no son ve­r­da­de­ros o falsos según el principio booleano, sino que tienen un valor cero. En principio, están vacíos. Para nuestro ejemplo, se­le­c­cio­na­mos una lista de valores di­fe­re­n­tes. Se trata de valores enteros, vacíos o booleanos. Luego usamos filter() de Python con None y ordenamos los valores que no cumplen nuestra condición. Este sería el código:

valores = [1, 2, 3, 'x', 0, 4, True, False, 5] 
nuevo_iterador = filter(None, valores) 
nuevos_valores = list(nuevo_iterador) 
print(nuevos_valores)
python

Este sería el resultado:

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

Eliminar cadenas vacías con filter()

Para eliminar cadenas vacías, la forma más sencilla de hacerlo también es con filter() de Python. El comando co­rre­s­po­n­die­n­te podría tener este aspecto:

frase = ['Esto', ' ', 'es', 'un', ' ', 'ejemplo', ' '] 
frase = list(filter(None, frase)) 
print(frase)
python

A co­n­ti­nua­ción, las cadenas vacías se ordenan para la salida y solo se tienen en cuenta las que tienen un valor. El resultado es el siguiente:

['Esto', 'es', 'un', 'ejemplo']
python
Consejo

Detección au­to­má­ti­ca de fra­me­wo­r­ks, puesta en escena sencilla y numerosas funciones: con Deploy Now de IONOS, no solo utilizas una in­frae­s­tru­c­tu­ra fiable, sino que también de­s­plie­gas tu página web o app di­re­c­ta­me­n­te a través de GitHub. Elige tu tarifa según tus objetivos.

Ir al menú principal