Python | Maneras de rotar una lista

La rotación de una lista también se ha discutido anteriormente, pero este artículo en particular se enfoca en taquigrafías y varias técnicas cortas para lograr esto en una sola línea o una palabra. Esta operación es bastante esencial en la vida de un programador para lograr varias tareas.

Analicemos las diferentes formas en que podemos rotar una lista.

Método n.º 1: Uso de cortes
Este método en particular es el método genérico y se emplea principalmente para lograr esta tarea y también se ha discutido en muchos artículos. Funciona simplemente uniendo la parte cortada posterior a la parte cortada inicial dado el número de rotación.

# Python3 code to demonstrate 
# rotation of list 
# using slice 
  
# initializing list
test_list = [1, 4, 6, 7, 2]
  
# printing original list 
print ("Original list : " + str(test_list))
  
# using slicing to left rotate by 3
test_list = test_list[3:] + test_list[:3]
  
# Printing list after left rotate
print ("List after left rotate by 3 : " + str(test_list))
  
# using slicing to right rotate by 3
# back to Original
test_list = test_list[-3:] + test_list[:-3]
  
# Printing after right rotate
print ("List after right rotate by 3(back to original) : "
                                         + str(test_list))
Producción:

Original list : [1, 4, 6, 7, 2]
List after left rotate by 3 : [7, 2, 1, 4, 6]
List after right rotate by 3 ( back to original) : [1, 4, 6, 7, 2]

 
Método n.° 2: Uso de la comprensión de listas
Este problema también se puede resolver con un método ingenuo, pero su implementación más corta sería con la ayuda de la comprensión de listas. En este método, simplemente reasignamos el índice a cada valor a una posición específica después de la rotación.

# Python3 code to demonstrate 
# rotation of list 
# using list comprehension
  
# initializing list
test_list = [1, 4, 6, 7, 2]
  
# printing original list 
print ("Original list : " + str(test_list))
  
# using list comprehension to left rotate by 3
test_list = [test_list[(i + 3) % len(test_list)]
               for i, x in enumerate(test_list)]
  
# Printing list after left rotate
print ("List after left rotate by 3 : " + str(test_list))
  
# using list comprehension to right rotate by 3
# back to Original
test_list = [test_list[(i - 3) % len(test_list)]
               for i, x in enumerate(test_list)]
  
# Printing after right rotate
print ("List after right rotate by 3(back to original) : " 
                                        + str(test_list))
Producción:

Original list : [1, 4, 6, 7, 2]
List after left rotate by 3 : [7, 2, 1, 4, 6]
List after right rotate by 3(back to original) : [1, 4, 6, 7, 2]

 
Método n.º 3: usarcollections.deque.rotate()
el módulo de colecciones tiene una clase deque que proporciona la rotate()función incorporada para permitir la rotación. Esta es una función menos conocida pero tiene una mayor utilidad.

# Python3 code to demonstrate 
# rotation of list 
# using rotate()
from collections import deque
  
# initializing list
test_list = [1, 4, 6, 7, 2]
  
# printing original list 
print ("Original list : " + str(test_list))
  
# using rotate() to left rotate by 3
test_list = deque(test_list)
test_list.rotate(-3)
test_list = list(test_list)
  
# Printing list after left rotate
print ("List after left rotate by 3 : " + str(test_list))
  
# using rotate() to right rotate by 3
# back to Original
test_list = deque(test_list)
test_list.rotate(3)
test_list = list(test_list)
  
# Printing after right rotate
print ("List after right rotate by 3(back to original) : "
                                        + str(test_list))
Producción:

Original list : [1, 4, 6, 7, 2]
List after left rotate by 3 : [7, 2, 1, 4, 6]
List after right rotate by 3(back to original) : [1, 4, 6, 7, 2]

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *