¿Qué es filter() y por qué podría ser la función más subestimada de Python?

| Última modificación: 27 de noviembre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Existen joyas de la programación que suelen ser subestimadas o echadas en el olvido. Este es el caso de filter(), una función que puede convertirse en gran aliada si requieres trabajar con datos y no sabes qué incluir y qué descartar. Hoy te enseñaremos cómo es filter(), para qué se usa y por qué es tan subestimada.

filter() en python

¿Qué es filter() en Python?

La función filter() en Python te permite seleccionar elementos específicos de un iterable (como listas, tuplas o conjuntos) en función de un criterio que definas. Para ser específicos, actúa como un filtro literal, reteniendo solo los elementos que cumplen con una condición.

Su sintaxis es así:

filter(función, iterable)
  • función: Una función que define la condición para filtrar. Debe devolver True para los elementos que quieres conservar y False para los que deseas excluir.
  • iterable: El conjunto de datos que será filtrado, como una lista o una tupla.

El resultado es un objeto filter que puedes convertir en una lista, tupla o cualquier otro iterable.

Si aun no te queda claro, seguro con este ejemplo será más entendible: digamos que que tienes una lista de edades y solo quieres conservar aquellas mayores o iguales a 18 años:

edades = [5, 12, 17, 18, 24, 32]

def es_adulto(edad):
return edad >= 18

adultos = filter(es_adulto, edades)

print(list(adultos)) # Salida: [18, 24, 32]

En este ejemplo, filter() aplica la función es_adulto a cada elemento de la lista y devuelve únicamente las edades que cumplen la condición.

¿Por qué es filter() tan poderosa (y subestimada)?

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

Aunque puedes lograr resultados similares con un bucle for o una comprensión de listas, filter() es en ocasiones mucho mejor por varias razones:

  1. Código más limpio: En lugar de escribir un bloque de bucles y condicionales, puedes condensar la lógica en una sola línea.
  2. Eficiencia: filter() genera los resultados en tiempo real, lo que significa que no ocupa espacio extra en memoria al generar una nueva lista completa.
  3. Legibilidad: Especialmente útil cuando trabajas con datos grandes o condiciones complejas, haciendo que tu código sea más fácil de entender.

¿Para qué se usa filter()?

Entre otras cosas, puedes usar filter() para:

  • Filtrar datos numéricos: Filtra solo los números pares de una lista:
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9]

def es_par(num):
return num % 2 == 0

pares = filter(es_par, numeros)

print(list(pares)) # Salida: [2, 4, 6, 8]
  • Filtrar cadenas: Selecciona palabras que contienen más de 4 letras.
palabras = ["sol", "luna", "estrellas", "cielo", "mar"]

def es_larga(palabra):
return len(palabra) > 4

largas = filter(es_larga, palabras)

print(list(largas)) # Salida: ['estrellas']
  • Combinando filter() con lambda: El uso de funciones lambda con filter() hace que tu código sea aún más compacto:
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9]
pares = filter(lambda num: num % 2 == 0, numeros)

print(list(pares)) # Salida: [2, 4, 6, 8]

Este enfoque elimina la necesidad de definir funciones separadas, ideal para tareas rápidas.

Filter() vs bucles tradicionales: ¿cuál es mejor?

Un bucle for también puede filtrar datos, pero el resultado es más largo y menos eficiente. Considera este ejemplo:

numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9]
pares = []

for num in numeros:
if num % 2 == 0:
pares.append(num)

print(pares) # Salida: [2, 4, 6, 8]

Aunque funcional, este enfoque requiere más líneas y utiliza memoria adicional para almacenar los resultados. Con filter(), el mismo resultado se logra en una sola línea y con mejor optimización.

En Keepcoding te enseñamos variedad de temáticas para que abordes la programación como se debe, con todas las herramientas necesarias para enfrentarte a un mundo laboral en constante crecimiento. Por eso te ofrecemos el bootcamp en programación desde cero, que te ayudará a transformar tu vida en poco tiempo. ¡Únete a la mejor comunidad y da el primer paso ahora!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a Programar desde Cero

Full Stack Jr. Bootcamp

Apúntate y consigue uno de los perfiles más demandados con Python en solo 4 meses.