Use la función Enumerate en Python para crear bucles con contadores

Use Enumerate Function Python Create Loops With Counters



Este artículo explicará el uso de la función enumerar disponible en la biblioteca de módulos estándar de Python. La función Enumerar le permite asignar un índice o contar a elementos en cualquier objeto iterable. A continuación, puede implementar más lógica en ellos, ya que tendrá acceso a ambos valores y un recuento asignado.

Sintaxis y ejemplo básico

Si ha utilizado un bucle for en otros lenguajes de programación, especialmente el lenguaje C y otros lenguajes con sintaxis de estilo C, es posible que haya especificado un índice inicial en el bucle. Como referencia, así es como se ve un bucle for en C y otros lenguajes que tienen una sintaxis similar:







por (En tI= 0;I< 10;I++)

{

printf ('%D orte',I);

}

La declaración de bucle inicializa una variable que tiene un valor de cero, verifica que sea menor que un umbral y la incrementa en un recuento después de evaluar la lógica dentro del bloque de bucle (si se cumple la condición de parada). De esta manera, puede usar un índice y asignarlo a cualquier objeto referenciado en su bloque de bucle. En comparación, así es como se ve un bucle for con el mismo resultado en Python:



porIen distancia(0, 10):

impresión (I)

La función de rango en Python le permite especificar una secuencia de rango de números que tiene un paso predeterminado de 1. Puede cambiar el valor del paso proporcionando un tercer argumento. El segundo argumento en la función de rango se usa para establecer el umbral para la condición de parada. Ambos ejemplos de código producen el siguiente resultado:



0

1

2

3

4

5

6

7

8

9

Estos bucles funcionan bien si solo desea generar una secuencia numérica y asociarlos con alguna lógica dentro de la declaración del bucle. Sin embargo, es posible que deba usar otro bucle anidado o usar la función de rendimiento en cualquier tipo iterable para asignarles algún tipo de recuento rastreable. El método de enumeración facilita la asignación de índices a iterables en una declaración, eliminando así la necesidad de ejecutar múltiples bucles anidados. Eche un vistazo a este ejemplo de código:





números= ['cero', 'uno', 'dos', 'Tres', 'cuatro', 'cinco']

numerados_numeros= enumerado(números)

poríndice,artículoennumerated_numbers:

impresión (índice,artículo)

La primera declaración define una nueva variable llamada números y le asigna un iterable (tipo de lista). La segunda declaración muestra el uso de la función enumerar donde le proporciona un iterable como argumento obligatorio. La tercera declaración convierte la variable enumerated_numbers en un objeto de tipo lista. De forma predeterminada, la función enumerar genera un objeto de tipo enumerado y no un tipo iterable, por lo que debe convertirlo. Después de ejecutar el ejemplo de código mencionado anteriormente, debería obtener el siguiente resultado:

[(0, 'cero'), (1, 'uno'), (2, 'dos'), (3, 'tres'), (4, 'cuatro'), (5, 'cinco')]

La función enumerar asigna un recuento a cada elemento en un tipo iterable y crea tuplas con valores emparejados. De forma predeterminada, el recuento comienza desde cero.



Ahora que ha asignado un número a cada elemento en un tipo iterable, puede recorrerlo fácilmente sin escribir declaraciones anidadas:

números= ['cero', 'uno', 'dos', 'Tres', 'cuatro', 'cinco']

numerados_numeros= enumerado(números)

poríndice,artículoennumerated_numbers:

impresión (índice,artículo)

El ejemplo de código especificado anteriormente producirá el siguiente resultado:

0 cero

1 uno

2 dos

3 tres

4 cuatro

5 cinco

Puede acortar el código utilizando la función enumerar en línea, como se muestra en el siguiente ejemplo:

números= ['cero', 'uno', 'dos', 'Tres', 'cuatro', 'cinco']

poríndice,artículoen enumerado(números):

impresión (índice,artículo)

Usar enumerar con un índice de inicio diferente

La función enumerar toma un argumento opcional donde puede especificar un índice inicial. Por defecto es cero, pero puede cambiarlo usando el argumento de inicio:

números= ['uno', 'dos', 'Tres', 'cuatro', 'cinco']

poríndice,artículoen enumerado(números,comienzo=1):

impresión (índice,artículo)

En la segunda declaración, el argumento start = 1 se usa para cambiar el punto de partida. Después de ejecutar el ejemplo de código especificado anteriormente, debería obtener el siguiente resultado:

1 uno

2 dos

3 tres

4 cuatro

5 cinco

Asignar índice con pasos

En la primera sección de este artículo, se muestra la sintaxis para bucle for en lenguaje C, donde puede definir pasos entre cada conteo o índice subsiguiente. La función enumerar en Python no tiene ningún argumento de este tipo disponible, por lo que no puede especificar un paso entre recuentos. De hecho, puede escribir su propia lógica para implementar pasos dentro del bloque de bucle for enumerado. Sin embargo, hay una forma de implementar pasos personalizados escribiendo código mínimo. El siguiente ejemplo muestra la implementación de pasos usando funciones zip y range:

números= ['cero', 'dos', 'cuatro', 'seis']

poríndice,artículoen Código Postal(distancia(0, 7, 2),números):

impresión (índice,artículo)

La función zip le permite crear pares seleccionando elementos que tienen el mismo índice de dos o más iterables. Entonces, la función zip aquí toma un elemento del iterable devuelto por la función range (0, 7, 2) y otro elemento de la lista de números y luego los empareja en una tupla. El resultado final es una implementación idéntica a la función enumerate pero con pasos personalizados especificados como un tercer argumento en la función range (0, 7, 2) (2 en este caso). Después de ejecutar el ejemplo de código especificado anteriormente, debería obtener el siguiente resultado:

0 cero

2 dos

4 cuatro

6 seis

Conclusión

La función enumerar en Python le permite escribir código conciso asignando una secuencia numérica a elementos en un objeto iterable. Esto es realmente útil si desea realizar un seguimiento del índice de elementos dentro de un tipo iterable. Si desea enumerar tipos iterables con pasos personalizados, use la función zip explicada en el último ejemplo.