El autor de la nota, que estamos publicando hoy, quiere hablar sobre algunas de las características del uso
for
bucles en Python.

El bucle
for
es una de las piedras angulares de la programación. Los futuros programadores se familiarizan con estos ciclos al comienzo de sus estudios y, después del primer conocido, los usan constantemente.
Si comenzó a desarrollar en Python, teniendo experiencia trabajando con otro lenguaje de programación popular, como PHP o JavaScript, entonces está familiarizado con la técnica de usar una variable de contador que almacena, por ejemplo, el índice del elemento actual de la matriz que se procesa en un bucle. Aquí hay un ejemplo de trabajo con un bucle escrito en JavaScript:
let scores = [54,67,48,99,27]; for(const i=0; i < scores.length; i++) { console.log(i, scores[i]); }
Cuando se trabaja con bucles
for
, es muy importante comprender que estos bucles no se repiten en las matrices. Solo le dan al programador un mecanismo para trabajar con la variable de contador, que se utiliza para acceder a los elementos de las matrices procesadas.
En el ejemplo anterior, la variable
i
no tiene ninguna relación explícita con la matriz de
scores
. Simplemente almacena un cierto número, que aumenta en 1 en cada iteración del bucle y que, como resulta, es adecuado para el acceso secuencial a los elementos de la matriz por sus índices.
Manera antigua (sin éxito) de trabajar con matrices
Python no tiene bucles tradicionales como el que se muestra arriba. Es cierto, si eres como yo, entonces tu primer deseo en dominar Python será encontrar una manera de crear un ciclo que te resulte familiar y conveniente para trabajar.
Como resultado, puede detectar la función
range()
y escribir en Python algo similar a lo siguiente:
scores = [54,67,48,99,27] for i in range(len(scores)): print(i, scores[i]) """ 0 54 1 67 2 48 3 99 4 27 """
El problema con este bucle es que no se ajusta muy bien a la ideología de Python. En él, no iteramos sobre la lista, sino que usamos la variable auxiliar
i
para acceder a los elementos de la lista.
De hecho, incluso en JavaScript, hay métodos que le permiten iterar sobre matrices, por así decirlo, sin intermediarios. Estos son para cada
forEach
y
for of
bucles.
Usando la función enumerate ()
Si necesita rastrear adecuadamente el "índice de un elemento" en un
for
loop de Python, entonces la función
enumerate()
, que le permite "recalcular" el objeto iterable, puede ser adecuada. Se puede usar no solo para procesar listas, sino también para trabajar con otros tipos de datos, con cadenas, tuplas y diccionarios.
Esta función toma dos argumentos: un objeto iterable y un valor de contador inicial opcional.
Si no se pasa el valor inicial del contador
enumerate()
, por defecto se establece en
0
. La función crea un objeto que genera tuplas que consisten en el índice del elemento y este elemento en sí.
scores = [54,67,48,99,27] for i, score in enumerate(scores): print(i, score)
Dicho código resultó ser mucho más limpio que el código del ejemplo anterior. Dejamos el trabajo con la lista de índices, iteramos sobre los valores mismos, obteniendo acceso directo a ellos en el ciclo
for,
y vemos los valores con los que trabajamos en la declaración del ciclo.
Aquí hay una buena característica que atraerá a aquellos que necesitan mostrar listas numeradas para que el número del primer elemento no sea
0
, de acuerdo con su índice, sino
1
. Por lo general, para hacer esto, debe cambiar el número que se muestra del elemento. Por ejemplo, así:
i + 1
. Cuando se usa la función
enumerate()
, es suficiente pasarle, como segundo argumento, el número desde el que desea comenzar la numeración. En nuestro caso -
1
:
scores = [54,67,48,99,27] for i, score in enumerate(scores, 1): print(i, score) """ 1 54 2 67 3 48 4 99 5 27 """
Resumen
Esperemos que esta breve historia sobre bucles en Python te haya permitido aprender algo nuevo sobre este lenguaje.
Estimados lectores! ¿Conoces otras formas de usar la función
enumerate()
? ¿Los bucles creados con
enumerate()
parecen más legibles que los bucles creados con
range(len())
?
