Gabriel Obregón
🧠enumerate() en Python
🔍 ¿Qué es enumerate()?
📘 Es una función integrada de Python que permite:
➡️ Recorrer listas o iterables añadiendo un índice automáticamente.
➡️ Devolver pares (índice, elemento) listos para usar.
➡️ Definir el índice inicial con start.
➡️ Evaluarse solo al iterar, lo que mejora la eficiencia.
🧩 Ideal para trabajar con listas grandes o donde se necesite numerar elementos.
⚡ Ventajas principales
✨ Legibilidad: el código se entiende de inmediato.
⚙️ Eficiencia: se ejecuta más rápido que usar contadores manuales.
💬 Simplicidad: elimina variables extra como counter.
🧱 Seguridad: menos riesgo de errores (sin estado mutable).
📈 Escalabilidad: funciona bien con millones de elementos.
⚠️ El problema del contador manual
❌ Código tradicional:
counter = 1
for article in sample_articles:
print(f"{counter}. {article}")
counter = counter + 1
🚫 Desventajas:
- Código más largo.
- Mayor posibilidad de errores.
- Lógica repetitiva.
- Ineficiencia en colecciones grandes.
🚀 Solución con enumerate()
✅ Código limpio y directo:
for index, article in enumerate(sample_articles, start=1):
print(f"{index}. {article}")
🎯 También puedes cambiar el inicio del conteo:
for index, article in enumerate(sample_articles, start=10):
print(f"{index}. {article}")
💎 Beneficios inmediatos:
- Recibes (índice, elemento) juntos.
- Puedes definir start.
- Evaluación perezosa → recorre solo lo necesario.
🔬 Cómo funciona por dentro
🔍 enumerate() crea un objeto iterable que produce tuplas (índice, valor) al recorrerlo:
enum_articles = enumerate(sample_articles)
print(enum_articles) # muestra el objeto enumerate
for item in enum_articles:
print(item) # imprime (índice, article)
🧠 No convierte toda la lista, solo genera valores al iterar.
🧩 Caso práctico: enumerar fuentes únicas
📚 Objetivo: obtener fuentes de noticias sin duplicados y numerarlas.
source_set = getSources(articles) # devuelve un set sin duplicados
for index, source in enumerate(source_set, start=1):
print(f"{index}. {source}")
🔸 Resultados:
- Se eliminan duplicados con set.
- Se numeran automáticamente con enumerate.
- Se obtiene un listado claro y ordenado (ejemplo: 38 fuentes únicas).
🪶 Mejora de legibilidad del código
✏️ Nombres claros comunican mejor la intención del código.
Antes:
source_set = getSources(articles)
Después:
unique_sources = get_unique_sources(articles)
for idx, src in enumerate(unique_sources, start=1):
print(f"{idx}. {src}")
💡 Más fácil de mantener y entender.
🧠 Conceptos que refuerzas al usar enumerate
📘 Enumerate: genera índice y elemento como tupla.
🔢 Índice y elemento: desempaquetado directo en el for.
🧮 start: define el punto de inicio del conteo.
⚡ Evaluación perezosa: recorre solo cuando se itera.
🔒 Tupla: estructura inmutable (índice, valor).
🔁 Iterable: cualquier objeto recorrible (list, set, dict, etc.).
🧱 Set: colección sin duplicados.
🎨 Legibilidad: nombres claros → intención clara.
🚀 Rendimiento: implementado en C, muy eficiente.
🛡️ Menos errores: sin contador mutable → menos fallos.
