Artículo original escrito por Jessica Wilkins
Artículo original Python Enumerate – Python Enum For Loop Index Example
Traducido y adaptado por Franciscomelov

Enumerate = Enumerar
Cuando estás programando con Python, puedes usar la función   enumerate() y un  bucle for  para imprimir cada valor de un iterable junto con un contador.

En este artículo, Te mostraré como usar la función enumerate() de Python  y el bucle for y explicaré por qué es una mejor opción a crear tu propio contador incremental.

Pero primero, veamos como hacerlo sin la función enumerate().

Como usar el bucle for sin la función enumerate() en Python

En Python, un iterable es un objeto el cual puedes iterar y retornar un valor en cada paso. Ejemplos de iterables son listas, tuplas y una cadena de texto ó string.

En este ejemplo, Tenemos una lista de nombres de perros y una variable llamada contador.

perros = ['firulais', 'lola', 'pluto', 'nico']
contador = 1

Podemos usar un bucle for para pasar por cada nombre de la lista e imprimirlo. También incrementaremos el valor de contador en cada paso para saber cuantas veces iteramos sobre la lista.

for nombre in perros:
    print(contador, nombre)
    contador += 1

Así es como se vería el resultado impreso en la pantalla:

image

Aunque este método funciona, pueden llegar a presentarse errores.

Un problema común es; olvidar incrementar la variable contador.

Si modifico el código:

perros = ['firulais', 'lola', 'pluto', 'nico']
contador = 1

for nombre in perros:
    print(contador, nombre)

esto sería lo que se imprimiría en pantalla:

image-1

Ahora la variable contador ya no nos cuenta los pasos de cada iteración, sino solo muestra su valor original "1".

En lugar de incrementar la variable contador por nosotros mismos, podemos usar la función enumerate() con el bucle for para hacerlo automáticamente.

¿Qué es la función enumerate() en Python?

La función incorporada (que viene por defecto al instalar python) enumerate() toma un iterable y un valor inicial, el cual es opcional

enumerate(iterable, valor inicial opcional)

Si omites el valor inicial, la cuenta inicia en cero.

El valor retornado de la función enumerate() es un objeto.

Esta función realiza el seguimiento de cada iteración, así no tendremos que actualizar la variable contador nosotros mismos.

Podemos usar la función enumerate() con un bucle for para imprimir los valores de un iterable junto a un contador.

Como usar el  bucle for y la función enumerate() en Python

En el siguiente ejemplo queremos imprimir una lista con las instrucciones para ir de una escuela a la tienda más cercana.

Primero crearemos una lista de direcciones:

direcciones = [
    'Dirigete hacia la fuente en la calle principal',
    'Camina sobre la calle principal hacia el norte',
    'Gira a la derecha en la calle Simon Bolivar',
    'Camina 2 calles y gira a hacia la izquierda  ',
    'Gira a la derecha en la calle 8',
    'Gira a la izquierda en la farmacia',
    'Gira a la izquiera en el estadio',
]

La función enumerate() tomará como argumentos la lista direcciones y el valor inicial.
Iniciaremos en 1 en lugar del valor por defecto cero.

Podemos escribirlo:

enumerate(direcciones, 1)

ó también podemos ser más específicos y escribir:

enumerate(direcciones, start = 1)

donde "start" significa, "inicia en".

Ahora en el bucle for ,  creamos las variables contador y direccion.

for contador, direccion in enumerate(direcciones, start=1):

Dentro del bucle imprimiremos las variables contador y direccion

print(contador, direccion)

Asé es como luce el programa completo:

direcciones = [
    'Dirigete hacia la fuente en la calle principal',
    'Camina sobre la calle principal hacia el norte',
    'Gira a la derecha en la calle Simon Bolivar',
    'Camina 2 calles y gira a hacia la izquierda  ',
    'Gira a la derecha en la calle 8',
    'Gira a la izquierda en la farmacia',
    'Gira a la izquiera en el estadio',
]

for contador, direccion in enumerate(direcciones, start=1):
	print(contador, direccion)

Y esto es lo que se imprimirá en la consola:

image-2

Como puedes ver la variable  contador se incrementa automáticamente con la función enumerate().

La función enumerate() dentro del bucle for retorna dos valores en cada iteración, uno es un contador que se guarda en la variable contador y el segundo valor es un elemento de la lista que se guarda en la variable  direccion.

Esto elimina la posibilidad de errores  al olvidar incrementar manualmente a contador.

Conclusión

Puedes usar la función enumerate() y un bucle for para imprimir cada elemento de un iterable junto a un contador.

La función enumerate() toma un iterable y un  valor inicial el cual es opcional, como argumentos.

start = 1  significa "inicia en 1"

enumerate(iterable, valor inicial opcional)
Ejemplo:
enumerate(mi_lista, start=1)
enumerate(mi_lista, 1)

Si el valor inicial opcional (start) es omitido la cuenta iniciara en cero.

Usar la función enumerate() es una mejor alternativa a crear tu propio contador y tener que incrementarlo manualmente dentro del bucle for.

Ya que la función enumerate() se actualiza automáticamente, se elimina la posibilidad de olvidar incrementarlo manualmente.

Espero que hayas disfrutado de este artículo y suerte en tu viaje al mundo de Python.