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 ;.