Rotar listas con Collections en Python

01/Mar/2021 Python , Deja un comentario
Programación en Python

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().

Vídeos sobre Python


¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.