How to Reverse a List in Python

Rayven Esplanada Feb 02, 2024
  1. Use range() to Reverse a List in Python
  2. Reverse a List by the while Loop in Python
  3. Reverse a List Using the Slice Operator in Python
  4. Use reversed() to Reverse a List in Python
How to Reverse a List in Python

This tutorial will demonstrate different ways of how to reverse a list in Python.

List reversal is one of the most common starter programming problems you experience when learning to program. In Python, there several easy ways to reverse a list.

Use range() to Reverse a List in Python

range() is a Python built-in function that outputs a list of a range of numbers.

Syntax of range()

range(start, stop, step)

This function has 3 arguments; the main required argument is the second argument stop, a number denoting where you want to stop. There are 2 optional arguments, start specifies where you should start counting and step specifies the incrementation of the sequence.

Take note that stop will have an offset of 1 since the counting starts at 0. To create a list that stops at 5 using range(), the stop value would have to be 6.

numbers = list(range(6))
print(numbers)

Output:

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

To reverse this list, then you have to specify the start and step arguments.

The start is set to 5, while step is -1 since we want to decrement the range by 1 each time. The stop argument should also be set to -1, since we want to stop at 0 (Since stop has an offset of 1).

numbers = list(range(5, -1, -1))
print(numbers)

Output:

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

Reverse a List by the while Loop in Python

Declare a list of 10 random integers that we want to create a new list in reverse order.

numbers = [66, 78, 2, 45, 97, 17, 34, 105, 44, 52]

Use a while loop over the list to output it in reverse. First, get the size of the list and deduct it by 1 to point to the last element of the list. Let’s also declare an empty list to store the new reversed version of the previous list.

idx = len(numbers) - 1
newList = []

Now use the while loop to iterate and store each element in the new list with each iteration decrementing idx until it hits 0.

while idx >= 0:
    newList.append(numbers[idx])
    idx = idx - 1

print(newList)

Output:

[52, 44, 105, 34, 17, 97, 45, 2, 78, 66]

Reverse a List Using the Slice Operator in Python

If you prefer not to loop over the list, then use the slice operator to decrement the array index by 1.

Similar to range(), the slice operator accepts three arguments: start, stop, and step.

Leave the first two arguments blank so it will cover the whole array and set the step value to -1 so it starts with at the end of the array and decrements it by 1 each time.

newList = numbers[::-1]
print(newList)

Output:

[52, 44, 105, 34, 17, 97, 45, 2, 78, 66]

Use reversed() to Reverse a List in Python

Another easy way to reverse a list in Python is to use the built-in function reversed(). This function accepts a list argument and returns an iterator of the reversed version of the same list.

Using the same example numbers above, reverse the list using this function. Don’t forget to wrap the function with list() to actually store the return value of reversed() into a list.

newList = list(reversed(numbers))
print(newList)

Alternatively, you can also use a for loop to iterate over the reversed list and store it directly in newList.

newList = [num for num in reversed(numbers)]
print(newList)

The output of both solutions will be the same.

[52, 44, 105, 34, 17, 97, 45, 2, 78, 66]

In summary, Python provides a simple way to reverse a list by making use of the function reversed(). You also can reverse a list manually by looping it in a for or while loop. Python also has an easy method of reversing a list in a single line if you are comfortable using the slice operator.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Related Article - Python List