Tutoriales Interactivos
BlogIniciar sesiónComenzar gratis
Inicio›Blog›Python›Cómo usar filter() y map() en Python

Cómo usar filter() y map() en Python

Python tiene funciones integradas que te permiten transformar y filtrar colecciones de datos de forma elegante: map() y filter(). Funcionan pasándoles otra función como argumento — por eso se llaman funciones de alto nivel.

¿Qué es una función de alto nivel?

Una función de alto nivel es aquella que recibe otra función como argumento. Esto puede sonar extraño al principio, pero es muy poderoso: le estás diciendo a map o filter "qué hacer con cada elemento".

filter(): seleccionar elementos

filter(funcion, iterable) devuelve solo los elementos para los que la función devuelve True.

numeros = [1, 8, 3, 12, 5, 20, 7]

mayores_que_5 = list(filter(lambda n: n > 5, numeros))

print(mayores_que_5)  # [8, 12, 20]

lambda es una función anónima de una sola línea — perfecta para casos simples.

map(): transformar elementos

map(funcion, iterable) aplica la función a cada elemento y devuelve los resultados.

precios = [1000, 2500, 800, 5000]

con_iva = list(map(lambda p: p * 1.19, precios))

print(con_iva)  # [1190.0, 2975.0, 952.0, 5950.0]

Nota: tanto filter como map devuelven un objeto especial — necesitas list() para convertirlo a lista.

Ejemplo 1: filtrar empleados activos

empleados = [
    {"nombre": "Ana", "activo": True},
    {"nombre": "Carlos", "activo": False},
    {"nombre": "María", "activo": True},
]

activos = list(filter(lambda e: e["activo"], empleados))

for emp in activos:
    print(emp["nombre"])
# Ana
# María

Ejemplo 2: transformar con función nombrada

Puedes pasar cualquier función, no solo lambdas:

def celsius_a_fahrenheit(c):
    return c * 9/5 + 32

temperaturas_c = [0, 20, 37, 100]
temperaturas_f = list(map(celsius_a_fahrenheit, temperaturas_c))

print(temperaturas_f)  # [32.0, 68.0, 98.6, 212.0]

Ejemplo 3: combinar filter y map

Primero filtra los precios mayores a 1000, luego aplica descuento del 20%:

precios = [500, 1500, 800, 3000, 200, 2500]

resultado = list(map(
    lambda p: p * 0.8,
    filter(lambda p: p > 1000, precios)
))

print(resultado)  # [1200.0, 2400.0, 2000.0]

filter/map vs comprensión de listas

En Python moderno, la comprensión de listas suele preferirse por su legibilidad:

# Con filter + map
resultado = list(map(lambda p: p * 0.8, filter(lambda p: p > 1000, precios)))

# Con comprensión (más legible)
resultado = [p * 0.8 for p in precios if p > 1000]

Ambas son correctas. La comprensión es más "pythónica".

Errores frecuentes

Olvidar el list(): filter() y map() devuelven iteradores, no listas. Si intentas imprimirlos directamente obtienes algo como <filter object at 0x...>.

Lambda demasiado compleja: Si la función tiene más de una línea de lógica, define una función nombrada con def. Las lambdas son para casos simples.

Aprende haciendo, no solo leyendo

Leer es el primer paso. El verdadero aprendizaje ocurre cuando practicas con ejercicios reales de Python y recibes corrección inmediata de IA.

Comenzar gratis →
Desafío Latam
+56 9 5117 7975
+52 1 55 4047 7251
[email protected]

Carreras

  • Full Stack JavaScript
  • Diseño UX/UI
  • Data Science
  • Data Analytics

Comunidad

  • Blog
  • Becas
  • Trabaja con Nosotros
  • Políticas de Calidad

Síguenos

© 2026 Desafío Latam. Todos los derechos reservados.