Entendamos estos dos conceptos, básicamente, “len” mide la longitud de algo, y la longitud no puede ser 0 o ese algo no existe, por eso inicia desde uno.
Pensemos en una escalera, si su longitud es 0, quiere decir que no hay peldaños osea, que no hay escalera
Sin embargo el índice, parte desde cero, por lo que si la lista tiene 8 elementos, su último índice siempre será 7
Pensemos en nuestra lista de 8 elementos cómo una escalera de 7 escalones.
Quizá no te haga demasiado sentido, pero piensen en esto:
El suelo también es un escalón
Entonces, nuestra escalera tendrá 8 elementos pero su último elemento tendrá índice 7(el último escalón) así que si le decimos al programa que vaya al escalón correspondiente a la longitud de la escalera, le estaríamos diciendo
"Camina 8 escalones en una escalera de 7 escalones"
Esto básicamente provoca que, si camina 8 escalones, se va a caer o chocará con la pared, y el error OutOfBounds, para este caso, es que el programa te diga
Caminé hasta 8 escalones pero cómo la escalera tenía 7 me pegué contra la pared y dejé de funcionar
Entonces, se utiliza la longitud - 1, que en palabras simples es decir:
"Recuerda que si quieres moverte según la longitud de la escalera, el piso también cuenta cómo escalón así que restale uno al total o te vas a pasar de los peldaños de la escalera"
Básicamente así es cómo funciona la longitud de una lista en función de sus índices, espero les sirva
Que genial tu explicación, estaba en estructuras de datos de JS pero me sirvio bastante.
gracias gaescriba