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))
[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)
[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)
[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