¿Por qué la cadena vacía está en cada cadena?

Por ejemplo:

>>> s = 'python' >>> s.index('') 0 >>> s.index('p') 0 

Esto se debe a que la subcadena de longitud 0 que comienza en el índice 0 en 'python' es igual a la cadena vacía:

 >>> s[0:0] '' 

Por supuesto, cada subcadena de longitud cero de cualquier cadena es igual a la cadena vacía.

Puede ver "python" como “la cadena vacía, seguida de una p , seguida de otras quince cadenas vacías, seguida de una y , seguida de cuarenta y dos cadenas vacías, …”.

En este punto, las cadenas vacías no ocupan espacio, por lo que no hay razón para que no estén allí.

El método de index podría especificarse así:

s.index(t) devuelve un valor i tal que s[i : i+len(t)] es igual a t

Si sustituye la cadena vacía por t , esto dice: “devuelve un valor i tal que s[i:i] es igual a "" “. Y, de hecho, el valor 0 es un valor de retorno correcto de acuerdo con esta especificación.