Con la función filter() de Python, puedes filtrar un iterable según una determinada condición y crear así un nuevo iterador que solo conste de valores comprobados. 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í seleccionar 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 diccionario, por ejemplo, en Python se puede utilizar filter() de forma especialmente eficaz. La función solo crea un objeto que hace referencia al iterable de salida y solo proporciona la función proporcionada y un índice. Por tanto, ocupa mucho menos espacio que otras opciones.

Sintaxis y parámetros

La sintaxis de filter() es la siguiente:

filter(function, iterable)
python

Por lo tanto, filter() tiene dos parámetros:

  • function: este argumento especifica una función que se utiliza para cada elemento dentro del iterable. Devuelve un valor booleano (“True” o “False”).
  • iterable: este parámetro especifica la secuencia a filtrar por la función filter(). Puede ser, por ejemplo, una lista específica, 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 siguientes apartados te mostramos cómo funciona exactamente con algunos ejemplos.

Ejemplo de filter() de Python

En nuestro primer ejemplo, utilizamos 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 utilizamos filter(). El código correspondiente 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 continuació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 convertido el resultado en una tupla. Su aspecto es el siguiente:

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

Combinació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 principalmente a nivel local. Para nuestro ejemplo, seleccionamos 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

Obtendremos 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 instrucciones de filtrar solo valores “falsy”. El término “falsy” se utiliza para describir valores que no son verdaderos o falsos según el principio booleano, sino que tienen un valor cero. En principio, están vacíos. Para nuestro ejemplo, seleccionamos una lista de valores diferentes. 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 correspondiente podría tener este aspecto:

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

A continuació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 automática de frameworks, puesta en escena sencilla y numerosas funciones: con Deploy Now de IONOS, no solo utilizas una infraestructura fiable, sino que también despliegas tu página web o app directamente a través de GitHub. Elige tu tarifa según tus objetivos.

¿Le ha resultado útil este artículo?
Ir al menú principal