Búsqueda de sitios web

¿Qué significa el error "Índice de lista fuera de rango" de Python?


Un error de índice se interpone entre usted y un programa completamente funcional... ¿qué hará?

Entonces estabas trabajando con una lista o matriz en Python y probablemente intentaste dividirla. Pero en lugar del resultado esperado, aparece un error que dice "índice de lista fuera de rango". No te preocupes, le puede pasar a cualquiera.

Exploremos qué significa este error, su causa y cómo eliminarlo sin más preámbulos.

¿Qué significa el error "índice de lista fuera de rango" en Python?

Cuando Python arroja un error de "índice de lista fuera de rango", significa que intentó dividir la lista más allá de su último índice.

Python identifica cada elemento de una lista por su índice. Y el índice de una lista comienza desde cero. Por ejemplo, cuando tiene una lista con cinco elementos, el primer elemento está en el índice cero, mientras que el último está en el cuarto índice.

Por ejemplo, en una lista de cinco lenguajes de programación:

Languages = ["Python", "Go", "PHP", "C", "Perl"]

La indexación de la lista anterior está entre cero y cuatro. Entonces, intentar dividirlo para imprimir el quinto elemento como se muestra a continuación genera un error:

print(languages[5])
<strong>Output</strong>:
IndexError: list index out of range 

En el ejemplo anterior, Python intenta buscar el quinto índice en la lista y, cuando no puede encontrarlo, arroja el error de índice de la lista. Esto se debe a que el primer elemento (Python) está en el índice cero, mientras que el último (Perl) está en el índice cuatro.

Esa es la base del error "índice de lista fuera de rango". Como se dijo, Python lo genera cada vez que intenta dividir una lista más allá de su último índice.

Cómo eliminar el error "índice de lista fuera de rango" en Python

Entonces, ¿cómo se puede eliminar este error? Es fácil.

Además de la sección anterior, puedes imprimir los índices usando un bucle for en una lista por comprensión:

indexes = [languages.index(i) for i in languages]
print(indexes)
<strong>Output</strong>:<strong>
</strong>[0, 1, 2, 3, 4] 

El índice de una lista es la base del corte en programación. Entonces, como conoce el índice más alto de la lista para el resultado anterior (4), puede descifrar el límite de segmento.

Por lo tanto, para dividir la lista y obtener el último elemento:

print(languages[4])
<strong>Output</strong>:<strong>
</strong>Perl 

Ahora genera el resultado correcto.

¿Qué sucede si desea recorrer la lista utilizando su índice?

Además del bucle for normal de Python, también puede utilizar el concepto de índice para recorrer una lista. Si bien este método puede parecer arduo, a veces es inevitable. Por ejemplo, resulta útil si desea ordenar una lista en orden inverso.

Este método funciona estableciendo un índice inicial e incrementándolo o disminuyéndolo en uno hasta el último índice disponible.

Para imprimir los elementos con un número de índice creciente (del primero al último elemento), por ejemplo:

index = 0 <strong># Initial index</strong> 
for i in Languages:
    print(Languages[index])
    index +=1
<strong>Output</strong>:<strong>
</strong>Python
Go
PHP
C
Perl 

Pero, ¿qué sucede si establece el índice inicial en uno en lugar de cero? Echar un vistazo:

index = 1 <strong># Initial index</strong> 
for i in Languages:
    print(Languages[index])
    index +=1
<strong>Output</strong>:<strong>
</strong>Go
PHP
C
Perl
IndexError: list index out of range 

En el ejemplo anterior, la indexación comienza desde el segundo elemento (índice uno, Ir). Entonces, mientras se incrementa, el ciclo no se detiene hasta que completa el recuento de los cinco elementos. Esto obliga al índice a aumentar en uno hasta el último elemento.

Por lo tanto, el segmento llega a un quinto índice que no está disponible. Entonces arroja un error de índice. Significa que el índice aumenta en el siguiente patrón para cada elemento:

1=1, 1+1=2, 1+2=3, 1+3=4, 1+4=5 

En lugar del patrón correcto, que es:

0=0, 0+1=1, 1+1=2, 1+2=3, 1+3=4

Como puede ver, el valor más alto del índice anterior es cuatro, lo cual es correcto ya que el ciclo comienza a incrementar la indexación desde cero.

Por lo tanto, establecer el índice inicial en cero como lo hizo en el primer ejemplo de esta sección elimina el error "índice de lista fuera de rango":

index = 0 <strong># Initial index</strong> 
for i in Languages:
    print(Languages[index])
    index +=1 <strong>#Increase the index by one for each iteration
</strong>

Para aplicar este concepto para generar los elementos en orden inverso, deberá restar uno de la longitud de la matriz. Entonces esto obliga al índice a comenzar desde cuatro y realizar una cuenta regresiva hasta el primer índice, cero.

Esto es útil si no está seguro del valor de longitud de la lista que proviene de una fuente, por ejemplo, una base de datos.

He aquí un ejemplo:

index = (len(Languages)-1)
for i in Languages:
    print(Languages[index])
    index -=1 <strong>#Decrease the index by one for each iteration</strong> 
<strong>Output</strong>:
Perl
C
PHP
Go
Python 

Pero si no se resta uno de la longitud de la lista, se genera el error "lista fuera del índice de rango":

index = (len(Languages)-1)
for i in Languages:
    print(Languages[index])
    index -=1
<strong>Output</strong>:
IndexError: list index out of range 

El código anterior arroja un error de índice porque la longitud de la lista es cinco e intenta comenzar a indexar de cinco a cero, mientras que el índice más alto es cuatro. Entonces significa que la lista no tiene un quinto índice (sexto elemento).

Obtenga listas de manejo creativo en Python

Los errores de Python son amigables para los humanos y normalmente legibles. Invariablemente, esto los hace rastreables en un grado razonable.

Como ya habrá aprendido, eliminar el error de índice de lista fuera de rango es bastante fácil. Si enfrenta este error en sus programas futuros, independientemente de cuán compleja sea la lista, puede aplicar los conceptos explicados en esta publicación para resolver el problema.

Siéntete libre de ser creativo con listas complejas. Es posible que también desees aprender a ordenar listas en Python en tu tiempo libre para dominarlo todo.