Python Program to Rotate Elements of a List


Lists can be used in Python to maintain several items in a single variable. The list is one of Python's four built-in data types for storing data collections. The other three, tuple, set, and dictionary, each serve a different function. Lists are constructed using square brackets. Because lists don't have to be homogeneous, they are the most useful tool in Python. One list contains Data-Types like Strings, Objects, and Integers. Lists can be modified after they have been generated because they are mutable.

The focus of this article is on shorthand and many quick ways to say this in one-liners or one word. This operation is very important for a coder to perform numerous jobs. We will see four different methods for completing this task using python.

Using The List Comprehension

While using this method, we just have to reassign the index to each element in the list after rotation at a particular position. This method due to its smaller implementation plays a great role in completing the task.

Algorithm

  • Defining a list first.

  • Use the list comprehension.

  • For applying two different sides right(i-index) and left(i+index).

  • Print the output list.

Syntax

#For left rotate

list_1 = [list_1[(i + 3) % len(list_1)]

#For right rotate

list_1 = [list_1[(i - 3) % len(list_1)]

Example

Here, in this code we have used the list comprehension to rotate the elements in a list that is the right and left rotate. For loop is used to iterate through the list of elements.

list_1 = [10, 14, 26, 37, 42]
print (" Primary list : " + str(list_1))
list_1 = [list_1[(i + 3) % len(list_1)]
   for i, x in enumerate(list_1)]
print ("Output of the list after left rotate by 3 : " + str(list_1))
list_1 = [list_1[(i - 3) % len(list_1)]
   for i, x in enumerate(list_1)]
print ("Output of the list after right rotate by 3(back to primary list) : "+str(list_1))
list_1 = [list_1[(i + 2) % len(list_1)]
   for i, x in enumerate(list_1)]
print ("Output of the list after left rotate by 2 : " + str(list_1))
list_1 = [list_1[(i - 2) % len(list_1)]
   for i, x in enumerate(list_1)]
print ("Output of the list after right rotate by 2 : "+ str(list_1))

Output

Primary list : [10, 14, 26, 37, 42]
Output of the list after left rotate by 3 : [37, 42, 10, 14, 26]
Output of the list after right rotate by 3(back to primary list) : [10, 14, 26, 37, 42]
Output of the list after left rotate by 2 : [26, 37, 42, 10, 14]
Output of the list after right rotate by 2 : [10, 14, 26, 37, 42]

Here, in this code we have used the list comprehension to rotate the elements in a list that is the right and left rotate. For loop is used to iterate through the list of elements.

Using Slicing

This specific technique is the standard technique. With the rotation number, it simply joins the later-sliced component to the earlier-sliced part.

Algorithm

  • Defining a list first.

  • Use slicing method.

  • Print each list after right and left rotation.

Syntax

FOR SLICING

#Left Rotate –

list_1 = list_1[3:] + list_1[:3]

#Right Rotate −

list_1 = list_1[-3:] + list_1[:-3]

Example

The following program rearranges the elements of a list. The original list is [11, 34, 26, 57, 92]. First rotate 3 units to the left. That is, the first three elements are moved to the end, resulting in [57, 92, 11, 34, 26]. Then rotate right by 3 so the last three elements move back and forth to their original positions [11,34,26,57,92].

Then rotate right by 2 so the last two elements move forward, giving [26, 57, 92 11 34]. Finally rotate left by 1 to move one element from start to end, resulting in [57 92 11 34 26].

list_1 = [11, 34, 26, 57, 92]
print (" Primary list : " + str(list_1))
list_1 = list_1[3:] + list_1[:3]
print ("Output of the list after left rotate by 3 : " + str(list_1))
list_1 = list_1[-3:] + list_1[:-3]
print ("Output of the list after right rotate by 3(back to Primary list) : "+str(list_1))
list_1 = list_1[-2:] + list_1[:-2]
print ("Output of the list after right rotate by 2 : "+ str(list_1))
list_1 = list_1[1:] + list_1[:1]
print ("Output of the list after left rotate by 1 : " + str(list_1))

Output

Primary list : [11, 34, 26, 57, 92]
Output of the list after left rotate by 3 : [57, 92, 11, 34, 26]
Output of the list after right rotate by 3(back to Primary list) : [11, 34, 26, 57, 92]
Output of the list after right rotate by 2 : [57, 92, 11, 34, 26]
Output of the list after left rotate by 1 : [92, 11, 34, 26, 57]

Using The Numpy Module

Using the given axis, for rotating the elements in the list we can also use the numpy.roll module from python. The input array's items are essentially shifted as a result of this. An element gets reversed to the initial position if it is moving from the first position to the final position.

Algorithm

  • Import the numpy.roll module

  • Define the list and give the particular index.

  • Print the output list.

Example

A list 'number' is created and assigned the values 1, 2, 4, 10, 18 and 83. The variable i is set to 1. The np.roll() function from the NumPy library is then used on the list number with an argument of i which shifts each element in the list by 1 index position (the first element becomes last).

import numpy as np
if __name__ == '__main__':
   number = [1, 2, 4, 10, 18, 83]
   i = 1
   x = np.roll(number, i)
   print(x)

Output

[83 1 2 4 10 18]

Usingcollections.deque.rotate()

The rotate() function is an inbuilt function that is provided by the deque class in the collections module and allows rotation. Despite being less well-known, this function is more useful.

Algorithm

  • First import the deque class from the collection module.

  • Define a list

  • Print the primary list

  • Using the rotate() rotate the elements

  • Print the output.

Example

The following program uses the deque data structure from the collections module to rotate a list. The original list is printed, then it rotates left by 3 and prints out the new rotated list. It then rotates right (back to its original position) by 3 and prints out the resulting list.

from collections import deque
list_1 = [31, 84, 76, 97, 82]
print ("Primary list : " + str(list_1))
list_1 = deque(list_1)
list_1.rotate(-3)
list_1 = list(list_1)
print ("Output list after left rotate by 3 : " + str(list_1))
list_1 = deque(list_1)
list_1.rotate(3)
list_1 = list(list_1)
print ("Output list after right rotate by 3(back to primary list) : "+ str(list_1))

Output

Primary list : [31, 84, 76, 97, 82]
Output list after left rotate by 3 : [97, 82, 31, 84, 76]
Output list after right rotate by 3(back to primary list) : [31, 84, 76, 97, 82]

Conclusion

In this article, we have briefly explained the four different methods for rotating the elements in a list.

Updated on: 24-Apr-2023

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements