Programa de Python para rotar a la derecha una lista por n

Dada una lista y un número entero n , escriba un programa en Python para rotar la lista a la derecha en una posición n.

Ejemplos: 

Entrada: n = 2, List_1 = [1, 2, 3, 4, 5, 6]
Salida: List_1 = [5, 6, 1, 2, 3, 4]
Explicación: Obtenemos la lista de salida después de girar a la derecha (en el sentido de las agujas del reloj) lista dada por 2.

Entrada:  n = 3, Lista_1 = [3, 0, 1, 4, 2, 3]
Salida: Lista_1 = [4, 2, 3, 3, 0, 1]

Enfoque #1: Recorra la primera lista uno por uno y luego coloque los elementos en los lugares requeridos en una segunda lista. 

Python3

# Python program to right rotate a list by n
 
# Returns the rotated list
 
def rightRotate(lists, num):
    output_list = []
 
    # Will add values from n to the new list
    for item in range(len(lists) - num, len(lists)):
        output_list.append(lists[item])
 
    # Will add the values before
    # n to the end of new list
    for item in range(0, len(lists) - num):
        output_list.append(lists[item])
 
    return output_list
 
 
# Driver Code
rotate_num = 3
list_1 = [1, 2, 3, 4, 5, 6]
 
print(rightRotate(list_1, rotate_num))
Producción

[4, 5, 6, 1, 2, 3]

Complejidad del tiempo : O(n)

Enfoque #2: Otro enfoque para resolver este problema utilizando la técnica de corte . Una forma de dividir la lista es usando el método len()

Python3

# Python program to right rotate
# a list by n using list slicing
n = 3
 
list_1 = [1, 2, 3, 4, 5, 6]
list_1 = (list_1[len(list_1) - n:len(list_1)]
                 + list_1[0:len(list_1) - n])
print(list_1)
Producción

[4, 5, 6, 1, 2, 3]

Enfoque #3: En el método anterior, se tomaron los últimos n elementos de list_1 y luego los elementos restantes de list_1. Otra forma es sin usar el método len().  

Python

# Right Rotating a list to n positions
n = 3
 
list_1 = [1, 2, 3, 4, 5, 6]
if n>len(list_1):
    n = int(n%len(list_1))
list_1 = (list_1[-n:] + list_1[:-n])
 
print(list_1)
Producción

[4, 5, 6, 1, 2, 3]

Complejidad del tiempo : O(n)

Nota: list_1[:] devolverá la lista completa ya que el espacio en blanco a la izquierda del operador de corte se refiere al inicio de la lista, es decir, 0 y el espacio en blanco a la derecha se refiere a la posición final de la lista. 

Publicación traducida automáticamente

Artículo escrito por SARATH KAUL 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 *