una separar reemplazar por funcion eliminar contar comparar caracteres caracter cadenas cadena python stride

separar - Cadena de Python que corta la clarificación del paso



reemplazar caracteres en python (4)

Así que realmente no consigo el trato con el parámetro de zancada en rebanar.
Por ejemplo, "123456"[::-2] produce "642" , pero ¿por qué "123456"[1::-2] produce "2" y "123456"[2::-2] produce "31" ?


Cuando estás usando stride tiene básicamente dos parámetros. (índice para iniciar zancada, intervalo de zancada)

"1234"[index::interval]

Solo recuerda que las picaduras están indexadas comenzando en cero,

"123456"[2::-2]

está diciendo que comienza en el índice 2 o "3" y toma cada uno dentro del intervalo.

"31"


Esto se debe a que la sintaxis es string[start:end:step]

"123456"[::-2]

Produce "642" porque comenzará a partir del último carácter. Esto se debe a que no proporcionó desde qué posición se ejecutaría el sector. Así que retrocederá 2 caracteres desde el último hasta que llegue al primero.

"123456"[1::-2]

Produce "2" porque le dijiste a Python que comenzara con el segundo carácter (índice 1 de la cadena) y le dijiste a Python que retrocediera 2 pasos desde esa posición. Lo que en este caso, Python obviamente devolvería solo "2". Esto se debe a que cuando Python intentó retroceder 2 pasos, ya golpeó el primer carácter de la cadena con solo un paso.

"123456"[2::-2]

Ya deberías poder resolver esto. Pero lo explicaré de todos modos. Entonces, le dijo a Python que comience desde el tercer carácter (o índice 2) y luego retroceda 2 pasos desde allí hasta que llegue al primer carácter. Así que comenzará desde "3" y luego retrocederá 2 pasos, y accidentalmente se habrá alcanzado el primer carácter, que resulta ser "1". Así que Python te dará "31".


La forma más fácil de explicar es probablemente abordar sus ejemplos:

"123456"[::-2] # This takes the whole string ([::]) # Then it works backward (-) # and it does every other character (2) "123456"[1::-2] # This is also working backward (-) # every other character (2) # but starting at position 1, which is the number 2. "123456"[2::-2] # Again, working backward (-) # Every other character (2) # begin at position 2, so you end up with positions 2, and 0, or ''31''

La sintaxis de división es [<start>:<end>:step] . Si se omite <start> y el paso es negativo, entonces comienza al final de la cadena.


Recuerda que los índices empiezan desde cero. Con esto en mente, puede ser más claro si cambia su cadena a ''012345'' :

In [1]: ''012345''[1::-2] Out[1]: ''1'' In [2]: ''012345''[2::-2] Out[2]: ''20'' In [3]: ''012345''[5::-2] Out[3]: ''531''

Como puede ver, la división comienza desde el índice correcto y toma el paso correcto (negativo) en cada paso hasta que llega al comienzo de la cadena.