Este tutorial le enseñará cómo utilizar el enumerar() función en Python.
La función enumerar () en Python proporciona una sintaxis concisa para acceder a los elementos en un iterable junto con sus índices.
Comenzaremos revisando cómo acceder a elementos e índices usando bucles simples y luego procederemos a aprender la sintaxis de Python. enumerar() función. También codificaremos ejemplos en el camino.
Vamos a empezar.
How to Iterate Using for Loop in Python
Cualquier objeto de Python sobre el que pueda iterar y acceder a los elementos individuales, uno a la vez, se denomina iterable. Por lo tanto, las listas, tuplas, diccionarios y cadenas de Python son todos iterables.

Tomemos un ejemplo de una lista de compras definida en la celda de código a continuación.
shopping_list = ["fruits","cookies","cereals","protein bars","post-it notes"]
En Python, puede usar el for
bucle para recorrer cualquier iterable. La sintaxis para hacer esto es la siguiente:
for item in <iterable>:
# do something on item
# item: looping variable
# <iterable>: any Python iterable: list, tuple, dictionary, string, and so on.
Ahora, usando esta sintaxis, repasemos shopping_list
y acceder a los elementos individuales.
for item in shopping_list:
print(item)
# Output
fruits
cookies
cereals
protein bars
post-it notes
Esta construcción le ayuda a acceder a los elementos directamente. Sin embargo, es posible que a veces necesite acceder al índice de los elementos, además de los propios elementos.
Puede utilizar una index
variable, que puede incrementar dentro del cuerpo del ciclo, como se muestra a continuación:
index = 0
for item in shopping_list:
print(f"index:{index}, {item}")
index += 1
# Output
index:0, fruits
index:1, cookies
index:2, cereals
index:3, protein bars
index:4, post-it notes
Pero este no es el método más eficiente. Si no recuerda incrementar el índice, su código no funcionará como se esperaba.
index = 0
for item in shopping_list:
print(f"index:{index}, {item}")
# no update of index inside loop body
# index is never updated and is always 0
# Output
index:0, fruits
index:0, cookies
index:0, cereals
index:0, protein bars
index:0, post-it notes
Otro patrón común de usar el for
bucle está en conjunción con el range()
función. Aprenderemos sobre eso en la siguiente sección.
How to Use range() Function to Access Index
Python incorporado len()
La función devuelve la longitud de cualquier objeto de Python. Entonces puedes llamar al len()
funcionar con shopping_list
el argumento para obtener la longitud del shopping_list
(que es 5, en este caso).
len(shopping_list)
# Output: 5
El range()
La función devuelve un objeto de rango que luego puede usar en bucle. Cuando recorres range(stop)
, obtienes los índices 0, 1, 2,…, stop-1.
Configurando stop = len(list)
, puede obtener la lista de índices válidos. Así que usando el range()
función, puede acceder al índice así como al elemento correspondiente, como se muestra a continuación.
for index in range(len(shopping_list)):
print(f"index:{index}, item: {shopping_list[index]}")
# Output
index:0, item: fruits
index:1, item: cookies
index:2, item: cereals
index:3, item: protein bars
index:4, item: post-it notes
Sin embargo, esta no es la forma Pythonic recomendada para acceder a índices y elementos simultáneamente.
Syntax of Python enumerate() Function
Python enumerar() le permite acceder a los elementos junto con sus índices utilizando la siguiente sintaxis general:
enumerate(<iterable>, start = 0)
En la sintaxis anterior:
<iterable>
es un Requisitos y puede ser cualquier iterable de Python, como una lista o una tupla.- start es un parámetro opcional que controla el índice en el que comienza el conteo. Si no especifica el valor de inicio, el valor predeterminado es cero.
Ahora puede llamar al enumerate()
funcionar con shopping_list
y devuelve un objeto de enumeración, como se muestra en la celda de código a continuación.
enumerate(shopping_list)
<enumerate at 0x7f91b4240410>
No puede recorrer el enumerate
objeto. Así que vamos a convertir el enumerate
objeto en una lista de Python.
list(enumerate(shopping_list))
# Output
[(0, 'fruits'),
(1, 'cookies'),
(2, 'cereals'),
(3, 'protein bars'),
(4, 'post-it notes')]
Otro método para acceder a los elementos de la enumerate
objeto es llamar a la función siguiente() con el enumerate
objeto como argumento. En Python, el next()
La función devuelve el siguiente elemento de un iterador.
Internamente, el next()
La función funciona llamando al __next__
en el objeto iterador para recuperar los elementos sucesivos.
Asignemos el objeto enumerar a la variable. shopping_list_enum
.
shopping_list_enum = enumerate(shopping_list)
Cuando llamas por primera vez next()
de shopping_list_enum
, obtendrá el índice cero y el elemento en el índice 0: la tupla (0, 'fruits')
.
Cuando continúa haciendo más llamadas al next()
función, obtendrá los elementos sucesivos junto con sus índices, como se describe a continuación.
next(shopping_list_enum)
# (0, 'fruits')
next(shopping_list_enum)
# (1, 'cookies')
next(shopping_list_enum)
# (2, 'cereals')
next(shopping_list_enum)
# (3, 'protein bars')
next(shopping_list_enum)
# (4, 'post-it notes')
Que pasa si llamas next()
después de haber accedido a todos los elementos y llegado al final de la lista? obtienes un StopIteration Error
.
next(shopping_list_enum)
# ---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
<ipython-input-16-4220f68f6c7e> in <module>()
----> 1 next(shopping_list_enum)
StopIteration:
El enumerate()
La función devuelve los índices y elementos sucesivos solo cuando es necesario y no se calculan antes de tiempo. En Proyectos de Python donde necesita tener en cuenta la eficiencia de la memoria, puede intentar usar el enumerate()
cuando necesite recorrer grandes iterables.
Python enumerate() Function Examples
Ahora que hemos aprendido la sintaxis para usar el enumerate()
función, modifiquemos el bucle for que teníamos antes.
De la sección anterior, sabemos que recorrer el objeto enumerate devuelve una tupla con el índice y el elemento. Podemos descomprimir esta tupla en dos variables: index
y item
.
for index, item in enumerate(shopping_list):
print(f"index:{index}, item:{item}")
# Output
index:0, item:fruits
index:1, item:cookies
index:2, item:cereals
index:3, item:protein bars
index:4, item:post-it notes
A continuación, veamos cómo especificar un valor de inicio personalizado.
How to enumerate() with Custom Start Value
Python sigue la indexación cero, por lo que el start
el valor es 0 por defecto. Sin embargo, si necesita los índices en formato legible por humanos, a partir de 1 o cualquier otro índice de su elección, puede especificar un índice personalizado. start
.
En primera shopping_list
ejemplo, si desea comenzar a contar desde 1, configure start = 1
.
for index, item in enumerate(shopping_list,1):
print(f"index:{index}, item:{item}")
# Output
index:1, item:fruits
index:2, item:cookies
index:3, item:cereals
index:4, item:protein bars
index:5, item:post-it notes
Sin embargo, al especificar el valor de inicio personalizado, debe asegurarse de especificarlo como el segundo argumento posicional.
Si cambia por error el orden del iterable y el valor inicial, se encontrará con un error, como se explica en la celda de código a continuación.
for index, item in enumerate(1,shopping_list):
print(f"index:{index}, item:{item}")
# Output
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-12-5dbf7e2749aa> in <module>()
----> 1 for index, item in enumerate(1,shopping_list):
2 print(f"index:{index}, item:{item}")
TypeError: 'list' object cannot be interpreted as an integer
Para evitar tales errores, puede especificar start
como argumento de palabra clave, como se muestra a continuación.
for index, item in enumerate(shopping_list, start = 1):
print(f"index:{index}, item:{item}")
# Output
index:1, item:fruits
index:2, item:cookies
index:3, item:cereals
index:4, item:protein bars
index:5, item:post-it notes
Hasta ahora, has aprendido a usar el enumerate()
función con listas de Python. También puede usar la función de enumerar para recorrer cadenas de pitón, diccionarios y tuplas.
How to Use enumerate() Function with Python Tuples
Suponer shopping_list
es una tupla. En Python, las tuplas también son colecciones, similares a las listas de Python, pero son inmutable. Por lo tanto, no puede modificarlos, y tratar de hacerlo conducirá a un error.
El siguiente fragmento de código se inicializa shopping_list
como una tupla.
shopping_list = ("fruits","cookies","cereals","protein bars","post-it notes")
type(shopping_list)
# Tuple
Si intenta modificar el primer elemento de la tupla, obtendrá un error ya que una tupla de Python es una colección inmutable.
shopping_list[0] = 'vegetables'
# Output
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-2-ffdafa961600> in <module>()
----> 1 shopping_list[0] = 'vegetables'
TypeError: 'tuple' object does not support item assignment
▶ Ahora, ejecute el siguiente fragmento de código para verificar que el enumerate()
la función funciona como se esperaba con tuplas.
shopping_list = ("fruits","cookies","cereals","protein bars","post-it notes")
for index, item in enumerate(shopping_list):
print(f"index:{index}, item:{item}")
How to Use enumerate() Function with Python Strings
También puede usar la función Python enumerate() para recorrer cadenas y acceder a los caracteres e índices simultáneamente.
Aquí hay un ejemplo.
py_str = 'Butterfly'
for index, char in enumerate(py_str):
print(f"index {index}: {char}")
# Output
index 0: B
index 1: u
index 2: t
index 3: t
index 4: e
index 5: r
index 6: f
index 7: l
index 8: y
Del resultado anterior, vemos que los caracteres junto con sus índices (0-8) se han impreso.
Conclusión👩🏽💻
Aquí tienes un resumen de lo que has aprendido.
- Puedes usar en bucles para acceder a los elementos y mantener una variable de contador o índice separada.
- Si lo desea, puede utilizar el distancia() función para obtener los índices válidos y acceder a los elementos mediante la indexación en la lista.
- Como una forma Pythonic recomendada, puede usar Python's enumerar() función con la sintaxis: enumerar (iterable). De forma predeterminada, el conteo o índice comienza en 0.
- Puede especificar la costumbre comienzo valor con la sintaxis enumerar (iterable, iniciar) para obtener el índice a partir del valor comienzo y los elementos correspondientes.
- Puede usar la función de enumeración cuando trabaje con tuplas, cadenas, diccionarios y, en general, cualquier iterable de Python.
Espero que haya encontrado útil este tutorial sobre la función enumerate(). A continuación, aprenda a encontrar el índice de un elemento en las listas de Python. ¡Sigue codificando!