Python Filter()-Function: filtrar iterables según condiciones
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)
pythonPor 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ónfilter()
. 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)
pythonA continuación, recibimos esta nueva lista como resultado:
[11, 17, 24, 25, 38, 40, 42]
pythonLa 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)
pythonHemos convertido el resultado en una tupla. Su aspecto es el siguiente:
('a', 'e', 'i')
pythonCombinació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)
pythonObtendremos el siguiente resultado:
[2, 4, 6, 8, 10]
pythonLa 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)
pythonEste sería el resultado:
[1, 2, 3, 'x', 4, True, 5]
pythonEliminar 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)
pythonA 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']
pythonDetecció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.