lista de índice fuera del rango de python

IndexErrors es uno de los tipos más comunes de errores de tiempo de ejecuciòn en Python. Se generan cuando intenta acceder a un valor de ìndice dentro de una lista de Python que no existe. En la mayorìa de los casos, los errores de ìndice son fáciles de resolver. Solo necesita hacer un poco de depuraciòn.

En este tutorial, vamos a hablar sobre el " indexerror: ìndice de lista fuera de rango " error. Discutiremos còmo funciona y analizaremos un escenario de ejemplo donde este error está presente para que podamos resolverlo.

El problema: indexerror: ìndice de lista fuera de rango

Como siempre, el mejor lugar para comenzar es leer y desglosar nuestro mensaje de error: & nbsp;

Este mensaje de error nos dice que estamos intentando acceder a un valor dentro de una matriz que no tiene una posiciòn de ìndice.

En Python, los n√∫meros de ìndice comienzan desde 0 . Aquì hay una matriz tìpica de Python:

Esta matriz contiene tres valores. El primer elemento de la lista, Java, tiene el valor de ìndice 0. Cada valor subsiguiente tiene un n√∫mero de ìndice 1 mayor que el anterior. Por ejemplo, el valor del ìndice de Python es 1.

Si intentamos acceder a un elemento en la posiciòn del ìndice 3, se devolverá un error. El √∫ltimo elemento de nuestra matriz tiene el valor de ìndice 2.

Escenarios (y soluciones) de ejemplo

Hay dos escenarios comunes en los que el " ìndice de lista fuera de rango " Se genera un error:

El 81% de los participantes afirmaron que se sentìan más seguros sobre sus perspectivas laborales después de asistir a un bootcamp. Asigne a un bootcamp hoy mismo.

El graduado promedio de bootcamp pasò menos de seis meses en la transiciòn profesional, desde comenzar un bootcamp hasta encontrar su primer trabajo.

Repasemos ambos de estos escenarios.

Las listas se indexan desde cero

El siguiente programa imprime todos los valores en una lista llamada " programaciòn_languages ‚Äã‚Äã" al shell de Python:

Primero, hemos declarado dos variables. La variable " lenguaje_programaciòn " almacena la lista de idiomas que queremos imprimir en la consola. La variable " contar " se usa para rastrear cuántos valores hemos impreso en la consola.

A continuaciòn, hemos declarado un while loop . Este bucle imprime el valor de " programaciòn_languages ‚Äã‚Äã" en la posiciòn de ìndice almacenada en " count & rdquo ;. Luego, agrega 1 al " count " variable. Este bucle contin√∫a hasta que el valor de " count " ya no es menor o igual que la longitud de los " lenguaje_de_programaciòn " list.

Intentemos ejecutar nuestro còdigo:

Todos los valores de nuestra lista se imprimen en la consola pero se genera un error. El problema es que nuestro ciclo contin√∫a hasta que el valor de " count " ya no es menor o igual a la longitud de " programaciòn_languages ‚Äã‚Äã& rdquo ;. Esto significa que su √∫ltima iteraciòn buscará:

Este valor no existe. Esto provoca un IndexError. Para resolver este problema, podemos cambiar nuestro operador de "= a & lt ;. Esto garantizará que nuestra lista solo se repita hasta que el valor de " count " ya no es menor que la longitud de " Programming_languages ‚Äã‚Äã& rdquo ;. Hagamos esta revisiòn:

Nuestro còdigo devuelve:

¬°Hemos resuelto con éxito el error! Nuestro bucle ya no intenta imprimir lenguaje_de_programaciòn [3]. Se detiene cuando el valor de " count " es igual a 3 porque 3 no es menor que la longitud de " Programming_languages ‚Äã‚Äã& rdquo ;.

Olvìdese de usar range ()

Cuando está iterando sobre una lista de n√∫meros, es fácil olvidarse de incluir un declaraciòn range () . Si accede a elementos de esta lista, es posible que se genere un error.

Considere el siguiente còdigo:

Este còdigo debe imprimir todos los valores dentro de la matriz "edades". Esta matriz contiene las edades de los estudiantes en una clase de escuela intermedia. Ejecutemos nuestro programa y veamos qué sucede:

Un error es rais ed. Agreguemos una declaraciòn de impresiòn dentro de nuestro bucle para ver el valor de " age " en cada iteraciòn para ver qué ha sucedido:

Nuestro còdigo devuelve:

La primera edad, 9, se imprime en la consola. Sin embargo, el valor de "edad" es un valor real de "edades". No es un n√∫mero de ìndice. En el " print (edades [edad]) " lìnea de còdigo, estamos intentando acceder a una edad por su n√∫mero de ìndice.

Cuando ejecutamos nuestro còdigo, busca: edades [9]. El valor de " age " es 9 en la primera iteraciòn. No hay ning√∫n elemento en nuestras " edades " lista con este valor.

Para resolver este problema, podemos usar una declaraciòn range () para recorrer nuestra lista de edades:

Ejecutemos nuestro còdigo nuevamente:

"Career Karma entrò en mi vida cuando más lo necesitaba y rápidamente me ayudò a combinar con un bootcamp. Dos meses después de graduarme, encontré el trabajo de mis sue√±os alineado con mis valores y metas en la vida! "

Venus, ingeniero de software de Rockbot

Todos los valores de las " edades & rdquo ; matriz se imprimen en la consola. La declaraciòn range () crea una lista de n√∫meros en un rango particular. En este caso, se crea el rango [0, 1, 2]. Estos n√∫meros se pueden usar para acceder a los valores en " edades " por su n√∫mero de ìndice.

Alternativamente, podrìamos usar un bucle " for & hellip; in " sin usar indexaciòn:

Este còdigo devuelve:

Nuestro còdigo no intenta acceder a ning√∫n valor por ìndice de la matriz " edades & rdquo ;. bucle itera a través de cada valor en la matriz " edades " y lo imprime en la consola.