🧠Potencia tu código con map() en Python
🔸 ¿Qué hace map()?
➡️ Aplica una función a cada elemento de una lista sin usar un for.
➡️ Hace tu código más limpio, declarativo y eficiente.
➡️ Su evaluación es perezosa → solo calcula resultados cuando los necesitas.
⚙️ TRANSFORMAR UN for EN map()
🔹 Enfoque clásico con for
numbers = [1, 2, 3, 4, 5]
cuadrados = []
for num in numbers:
cuadrados.append(num ** 2)
print(numbers, cuadrados)
🔹 Enfoque moderno con map()
def cuadrado(num):
return num ** 2
numbers = [1, 2, 3, 4, 5]
cuadrados_map = list(map(cuadrado, numbers))
print(cuadrados_map)
💡 Recuerda:
- map(función, iterable)
- No genera resultados hasta que los consumes
- Usa list(map(...)) → para ver o depurar resultados
📰 CASO PRÁCTICO: Cálculo del tiempo de lectura
🎯 Objetivo
Agregar un campo reading_time a cada artículo de noticias.
🧩 Función utilitaria (utils.py)
def get_reading_time(article: dict) -> dict:
"""
Calcula el tiempo de lectura.
"""
minutos = len(article["content"]) // 200 + 1 # ~200 caracteres/minuto
article["reading_time"] = minutos
return article
🧠 Integración en el programa principal (main.py)
from utils import get_reading_time
# articles: lista de diccionarios con "title" y "content"
articulos_con_tiempo = list(map(get_reading_time, articles))
for art in articulos_con_tiempo:
print(art["title"], "-", art["reading_time"], "min")
📍 Salida esperada:
- Muestra campos originales (source, description, etc.)
- Agrega reading_time (minutos estimados)
- Imprime título - tiempo de lectura
🚀 VENTAJAS DE USAR map()
✅ Rendimiento: procesa solo cuando accedes a los elementos
✅ Claridad: funciones con nombre → más legibles que lambdas
✅ Modularidad: lógica separada (utils) + orquestación (main)
✅ Estilo declarativo: expresas qué hacer, no cómo hacerlo
✅ Mantenibilidad: fácil de probar y extender