Claro, el [::]
es el operador extended slice. se le permite para tomar subseries. Básicamente, funciona especificando qué elementos quieres como [begin: end: step], y funciona para todas las secuencias. Dos cosas bonitas al respecto:
- Se pueden omitir uno o más de los elementos y lo hace "lo correcto"
- Los números negativos para comenzar, terminar, y el paso tienen un significado
Para empezar y terminar, si se le da un número negativo , significa contar desde el final de la secuencia.Por ejemplo, si tengo una lista:
l = [1,2,3]
Entonces l[-1]
es 3, l[-2]
es 2, y es l[-3]
1.
para el argumento step
, un número negativo significa trabajar hacia atrás a través de la secuencia. Así que para una lista ::
l = [1,2,3,4,5,6,7,8,9,10]
Se puede escribir l[::-1]
que básicamente significa usar un tamaño de paso de -1, mientras que la lectura a través de la lista. Python "hará lo correcto" al rellenar el inicio y detenerse, por lo que recorre la lista al revés y le da [10,9,8,7,6,5,4,3,2,1]
.
He dado los ejemplos con listas, pero las cadenas son solo otra secuencia y funcionan de la misma manera. Entonces, a[::-1]
significa construir una cadena uniendo los caracteres que obtienes caminando hacia atrás a través de la cuerda.
** ** Por favor Véase también: http: // stackoverflow .com/a/33457266/42223 que aborda esta característica de python que algunos pueden encontrar "peculiar". – dreftymac