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:
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:
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:
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.