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

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

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

Sintaxis y ejemplo básico

Si ha utilizado un bucle "para" en otros lenguajes de programación, especialmente el lenguaje "C" y otros idiomas que tienen sintaxis de estilo "C", puede haber especificado un índice inicial en el bucle. Como referencia, aquí está cómo se ve un bucle "para" en "C" y otros idiomas que tienen una sintaxis similar:

para (int i = 0; i < 10; i++)

printf ("%d \ n", i);

La instrucción de bucle inicializa una variable que tiene un valor de cero, verifica que es inferior a 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 mencionado en su bloque de bucle. En comparación, esto es cómo se ve un bucle con el mismo resultado en Python:

para i en el rango (0, 10):
Imprimir (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 de paso suministrando un tercer argumento. El segundo argumento en la función "rango" se utiliza para establecer el umbral para la condición de parada. Ambas muestras de código producen la siguiente salida:

0
1
2
3
4
5
6
7
8
9

Estos bucles funcionan bien si solo desea generar alguna secuencia de números y asociarlos con alguna lógica dentro de la declaración de 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 "enumerado" 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 esta muestra de código:

números = ["cero", "uno", "dos", "tres", "cuatro", "cinco"]
enumerated_numbers = enumerate (números)
Para el índice, elemento en enumerado_numbers:
Imprimir (í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 "enumerada" donde le suministra un argumento obligatorio. La tercera declaración convierte la variable "Enumerated_numbers" en un objeto de tipo de lista. Por defecto, la función "enumerada" genera un objeto de tipo "enumerado" y no un tipo iterable, por lo que debe convertirlo. Después de ejecutar la muestra de código mencionada anteriormente, debe obtener la siguiente salida:

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

La función "enumerada" asigna un recuento a cada elemento en un tipo iterable y crea tuples que tienen valores emparejados. Por defecto, el recuento comienza desde cero.

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

números = ["cero", "uno", "dos", "tres", "cuatro", "cinco"]
enumerated_numbers = enumerate (números)
Para el índice, elemento en enumerado_numbers:
Imprimir (índice, artículo)

La muestra de código especificada anteriormente producirá la siguiente salida:

0 cero
1 uno
2 dos
3 tres
4 cuatro
5 cinco

Puede acortar el código utilizando la función "enumerada" en línea, como se muestra en la muestra a continuación:

números = ["cero", "uno", "dos", "tres", "cuatro", "cinco"]
Para el índice, elemento en enumerado (números):
Imprimir (índice, artículo)

Usar enumerado con un índice inicial 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 "Inicio":

números = ["uno", "dos", "tres", "cuatro", "cinco"]
Para el índice, elemento en enumerado (números, inicio = 1):
Imprimir (índice, artículo)

En la segunda declaración, el argumento "inicio = 1" se usa para cambiar el punto de partida. Después de ejecutar la muestra de código especificada anteriormente, debe obtener la siguiente salida:

1 uno
2 dos
3 tres
4 cuatro
5 cinco

Asignación del índice con pasos

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

números = ["cero", "dos", "cuatro", "seis"]
Para el índice, elemento en zip (rango (0, 7, 2), números):
Imprimir (índice, artículo)

La función "zip" le permite crear pares recogiendo elementos que tienen el mismo índice de dos o más iterables. Entonces, la función "zip" aquí recoge un elemento de la función iterable devuelta de la función "rango (0, 7, 2)" y otro elemento de la lista de "números" y luego los combina en una tupla. El resultado final es una implementación idéntica a la función "enumerada" pero con pasos personalizados especificados como un tercer argumento en la función "rango (0, 7, 2)" (2 en este caso). Después de ejecutar la muestra de código especificada anteriormente, debe obtener la siguiente salida:

0 cero
2 dos
4 cuatro
6 seis

Conclusión

La función "enumerada" en Python le permite escribir código conciso asignando una secuencia de números 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" los tipos iterables con pasos personalizados, use la función "zip" explicada en el último ejemplo.