¿Por qué esta porción de lista trata a 0 y 1 como lo mismo en Python?

Estoy un poco confundido acerca de cortar una lista y la numeración aquí.

Python tiende a comenzar desde 0 en lugar de 1, y se muestra a continuación para que funcione de esa manera lo suficientemente bien. Pero si empezamos desde 0 y vamos hasta 3, ¿por qué no me hago un exam lugar de exa ? Después de todo, 0 – 3 son 4 números.

 >>> test = "example string" >>> print test[:3] exa >>> print test[0:3] exa >>> print test[1:3] xa 

Esta es una forma intencional, el último elemento es exclusivo.

¿Por que es esto entonces?

En primer lugar, entiendo que la test[0:len(test)] debe imprimir toda la lista y luego la test[0:len(test)-1] excluye un elemento. Esto es más bonito y más legible que si se incluyera el último elemento.

En segundo lugar, se debe a que si tiene la test[:-1] devolverá todos los elementos, pero el último, que es muy intuitivo. Si incluyera el segundo índice, para cortar el último elemento tendrías que hacer la test[:-2] que es feo y hace que sea más difícil de leer …

Además, la longitud de su lista resultante es end - start , que es otra característica conveniente al respecto.

Si usted tiene

 text[0:3] 

devolverá elementos de 0 a 3 - 1 .

 text[0] text[1] text[2] 

no

 text[3] 

En general , devolverá los valores de start a end - 1 . Para más información, puedes leer esto .