teclado separar raw_input por imprimir funcion datos contar comparar comando caracteres caracter capturar cadenas python string substring

separar - raw_input en python



¿Por qué el índice de corte de subcadena fuera de rango funciona en Python? (3)

¿Por qué el ''example''[999:9999] resultado un error? Como ''example''[9] hace, ¿cuál es la motivación detrás de esto?

A partir de este comportamiento, puedo suponer que ''example''[3] es, esencialmente / internamente, no es lo mismo que ''example''[3:4] , aunque ambos resultan en la misma ''m'' .


Básicamente has respondido tu propia pregunta. Cortar fuera de los límites de una secuencia (al menos para built-ins) no causa un error. Tiene sentido cuando lo piensas. La indexación devuelve un único elemento, pero el corte vuelve una subsecuencia de elementos. Entonces, cuando intenta indexar un valor inexistente, no hay nada que devolver; pero cuando cortas una secuencia fuera de los límites, aún puedes devolver una secuencia vacía.

También tenga en cuenta que hay una diferencia en general entre x[3] x[3:4] . Por ejemplo:

>>> [0, 1, 2, 3, 4, 5][3] 3 >>> [0, 1, 2, 3, 4, 5][3:4] [3]

La razón por la que se ven iguales en el caso de las cadenas es que no existe un carácter individual fuera de una cadena; un solo caracter es solo una cadena de 1 caracter.


El corte no está limitado por los tipos incorporados. Y aunque ambos ejemplos parecen tener el mismo resultado, funcionan de manera diferente; pruébalos con una lista en su lugar.


Por el simple hecho de agregar una respuesta que apunta a una sección robusta en la documentation :

Dada una expresión de corte como s[i:j:k] ,

La porción de s de i a j con el paso k se define como la secuencia de elementos con índice x = i + n * k tal que 0 <= n <(ji) / k. En otras palabras, los índices son i, i + k, i + 2 * k, i + 3 * k y así sucesivamente, deteniéndose cuando se alcanza j (pero nunca se incluye j). Cuando k es positivo, i y j se reducen a len (s) si son mayores

si escribe s[999:9999] , python devuelve s[len(s):len(s)] ya que len(s) < 999 y su paso es positivo ( 1 - por defecto).