En el artículo de hoy vamos a ver lo sencillo que es rotar listas con slicing en Python. Es decir, vamos a mover n elementos hacía izquierda o hacía derecha. De esta manera la idea es que si rotar hacía la derecha los elementos que vayan saliendo por la derecha vayan entrando por la izquierda y si estamos rotando a la izquierda, los elementos que salgan por la izquierda deberán de ir entrando por la derecha.
Pero lo primero de todo será el definir nuestra lista. Así que tal y como hemos visto en otros ejemplos de manejo de listas en Python creamos una sencilla lista de números:
lista = [1,2,3,4,5,6,7,8,9] print (lista)
Y ahora pasamos a rotar los números. En este caso hemos dicho que lo vamos a hacer con slicing. Así que lo primero será saber que es el slicing en Python.
Cuando tenemos una lista los elementos se numeran del 0 al N, dónde N es el tamaño de la lista -1. Veamos gráficamente cómo serían los índices.
De igual manera los índices se pueden identificar con valores negativos de derecha a izquierda. Siendo el último elemento de la lista el índice -1 hasta el primer elemento que tendría de índice el tamaño de la lista en negativo. Vemos visualmente cómo quedaría.
La técnica de slicing lo que hace es extraer un conjunto de elementos de la lista indicando su índice de origen y su índice de destino más 1, separados por dos puntos. La sintaxis sería la siguiente:
lista[indiceInicio:indiceFinal+1]
Estos índices pueden ser los positivos y los negativos. De esta manera si queremos desde el valor 2 hasta el valor 4 podríamos escribir la siguiente notación de slicing con Python.
lista = [1,2,3,4,5,6,7,8,9] print (lista[1:4]) print (lista[-8:-5])
Además tenemos que saber que si a la hora de hacer el slicing en Python no indicamos el primer índice se asume que es el primero de la lista y si no incluye el último se asume que es el final de la lista. De esta manera podríamos obtener elementos de la siguiente forma:
lista = [1,2,3,4,5,6,7,8,9] print (lista[3:])
Por otro lado podemos concatenar las listas con el operador +
siguiente la siguiente sintaxis:
lista = lista1 + lista2
Con todos estos conocimientos vamos a ver cómo podemos rotar listas con slicing en Python hacía la derecha y hacía la izquierda.
Si queremos rotarla hacía la izquierda, por ejemplo 3 elementos escribiremos lo siguiente:
lista = [1,2,3,4,5,6,7,8,9] lista = lista[3:]+lista[:3] print (lista)
Componemos la lista desde el índice 3 hasta el final más la lista desde el inicio al 3.
En el caso de querer rotarla hacía la derecha vamos a utilizar los índices negativos. De esta forma si queremos rotar 6 elementos hacía la derecha
lista = [1,2,3,4,5,6,7,8,9] lista = lista[-6:]+lista[:-6] print (lista)
Vemos que lo componemos desde el índice -6 hasta el final más desde el inicio hasta el -6.
Así de sencillo hemos conseguido rotar listas con slicing en Python hacía la derecha e izquierda. Espero que os sea de utilidad.