Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

Función Python enumerate(), explicada con ejemplos

Python enumerar
Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

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.

python-enumerar-img

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!

Gracias a nuestros patrocinadores
Más lecturas interesantes sobre el desarrollo
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Intente Intruder