Ya hemos visto en un artículo anterior cómo rotar listas con slicing en Pyhton. En este caso vamos a ver una alternativa para poder rotar listas con Collections en Python. Aunque el manejo del slicing sea sencillo quizás el uso de la librería Collections sea todavía más sencillo..
Pero vamos por pasos. Lo primero será crear la lista. En este caso vamos a crear una sencilla lista de números:
lista = [1,2,3,4,5,6,7,8,9]
Para poder utilizar los objetos de la librería Collections de Python lo que tendremos que hacer es importar la librería. Así que al principio de nuestro programa lo que haremos será importarla. Si bien solo vamos a importar el objeto deque
. Así que utilizaremos la sentencia from...import
para hacerlo de la siguiente manera:
from collections import deque
El objeto deque
es una cola que nos permite añadir elementos tanto al principio como al final de la cola. Lo primero que haremos será convertir la lista que tenemos en un objeto deque
de tipo cola.
lista = deque(lista)
Ahora, para poder rotar la lista nos vamos a apoyar en el método .rotate()
. A este método le pasaremos como parámetro el número de elementos que queremos rotar hacía la derecha. De esta manera si queremos rotar tres elementos escribiremos lo siguiente:
lista.rotate(3) print (list(lista))
De esta manera la lista inicial quedaría de la siguiente forma:
[7, 8, 9, 1, 2, 3, 4, 5, 6]
En ella vemos que hemos desplazado tres posiciones a la derecha y por lo tanto el inicio de la lista se ha empezado a rellenar con los elementos que desbordaban de la lista.
Vemos que para poder imprimir la lista en Python nos hemos apoyado en la función
list()
, que convierte la cola en una lista para que pueda ser impresa por pantalla.
Pero el método .rotate()
también permite que el parámetro sea negativo. En este caso el comportamiento del método .rotate()
será la de rotar los elementos hacía la izquierda. De esta manea podríamos escribir el siguiente código:
lista.rotate(-6) print (list(lista))
En este caso hemos rotado hacía la izquierda 6 elementos, quedándonos el siguiente resultado de la lista:
[4, 5, 6, 7, 8, 9, 1, 2, 3]
Hay que tener en cuenta que a la lista inicial ya le habíamos rotado 3 elementos a la derecha, así que el resultado final de mover 6 elementos a la izquierda sería el mismo si hubiésemos rotado 3 elementos a la izquierda a la lista inicial. En la rotación hacía la izquierda vemos que los elementos que desbordan por la izquierda son añadidos al final de la lista.
De esta manera tan sencilla hemos conseguido rotar listas con Collections en Python mediante el uso del objeto deque
y su método .rotate()
.