How to Reverse a List in Python

By
Bosko Marijan
Published:
November 12, 2025
Topics:

Reversing a list in Python is a common operation used to change the order of elements. It is useful to display data in reverse order, process recent items first, or prepare datasets for specific types of analysis.

This tutorial will teach you different methods for reversing a list in Python to achieve efficient and flexible Python code.

How to reverse a list in Python - a tutorial.

Prerequisites

Reverse a List in Python Using List Slicing

List slicing is the simplest and most Pythonic way to reverse a list. It uses the slicing syntax list[::-1], which means the list is read from start to end in steps of -1, effectively reversing the order. This method creates a new list without modifying the original one.

Follow the steps below to reverse a list using slicing:

1. Create a new script. Use a text editor or an IDE of your choice. For this tutorial, we will use nano:

nano list_slicing.py

2. Paste the following code:

numbers = [1, 2, 3, 4, 5]
reversed_numbers = numbers[::-1]
print(reversed_numbers)

3. Save and exit the file.

4. Run the script:

python3 list_slicing.py
Reverse a list in Python using slicing.

The slicing operator [::-1] returns a reversed copy of the list. The original list remains unchanged, making this method ideal when you want to preserve the initial data.

Note: Methods like reverse() cannot be used on immutable sequences (e.g., tuples or strings). For those, use slicing [::-1] or reversed().

Reverse a List in Python Using reverse() Function

The reverse() function reverses the elements of a list in place, meaning it changes the original list rather than creating a new one. This method is more memory-efficient since it does not create an additional list.

To reverse a list using the reverse() method:

1. Create a new Python script:

nano reverse_method.py

2. Add the following code:

numbers = [1, 2, 3, 4, 5]
numbers.reverse()
print(numbers)

3. Save and exit the file.

4. Execute the script:

python3 reverse_method.py
Reverse a list using the reverse() function.

The reverse() method directly updates the list, which is useful when you do not need the original order. However, if you later must restore the initial list, consider creating a copy before reversing.

Note: The reverse() method reverses the list in place and returns None. Assigning its result to a variable will give None, not the reversed list. For example: new_list = numbers.reverse() will not work as expected.

Reverse a List in Python Using Loop

Using a loop to reverse a list gives you more control over the process. You can either create a new reversed list or reverse the list in place by swapping elements manually.

The sections below show how both options work.

Use Loop to Create New Reversed List

In this approach, you create a new list and populate it with elements from the original list in reverse order.

Follow the steps below:

1. Create a new Python script:

nano loop_new_list.py

2. Paste the following code:

numbers = [1, 2, 3, 4, 5]
reversed_numbers = []
for i in range(len(numbers) - 1, -1, -1):
    reversed_numbers.append(numbers[i])
print(reversed_numbers)

3. Save and exit.

4. Run the script:

python3 loop_new_list.py
Use a loop to reverse a list in Python.

This approach keeps the original list unchanged and is useful when you need to build a new list in reverse order using custom logic.

Use Loop to Reverse List In-Place

You can also use a loop to swap elements between the beginning and end of the list until you reach the middle. This reverses the list in place without creating a copy. Follow these steps:

1. Create a new script:

nano loop_inplace.py

2. Add the code:

numbers = [1, 2, 3, 4, 5]
n = len(numbers)
for i in range(n // 2):
    numbers[i], numbers[n - i - 1] = numbers[n - i - 1], numbers[i]
print(numbers)

3. Save and exit.

4. Run the script:

python3 loop_inplace.py
Use a loop to reverse a list in-place.

This method provides a manual way to reverse the list and demonstrates how list elements can be swapped efficiently.

Reverse a List in Python Using List Comprehension

List comprehension can also reverse a list by iterating through its elements in reverse order and constructing a new list. This method is concise and explicit, offering better control over iteration:

1. Create a new script:

nano list_comprehension.py

2. Paste the following code:

numbers = [1, 2, 3, 4, 5]
reversed_numbers = [numbers[i] for i in range(len(numbers) - 1, -1, -1)]
print(reversed_numbers)

3. Save and exit.

4. Run the script:

python3 list_comprehension.py
Reverse a list in Python using comprehension.

Although similar to using loops, this method is more compact and follows Python's preferred idiomatic style for list manipulation.

Iterating Backwards Through List

Sometimes, you may only need to iterate through a list in reverse order without actually creating a reversed copy. The reversed() function provides an iterator that yields items from the end of the list to the beginning:

1. Create a new script:

nano iterate_reversed.py

2. Insert the following code:

numbers = [1, 2, 3, 4, 5]
for num in reversed(numbers):
    print(num, end=" ")

3. Save and exit.

4. Run the script:

python3 iterate_reversed.py
Iterate a list backwards in Python.

The reversed() function is memory-efficient because it does not create a copy of the list. It is ideal for large datasets where only reverse iteration is needed.

Note that the reversed() function returns an iterator, not a list. If you need a reversed list, wrap it with:

list(): reversed_list = list(reversed(numbers))

Conclusion

This tutorial showed how to reverse a list using Python. This can be done in several simple ways, each suited to different needs. Whether you use slicing for a quick copy, reverse() for in-place changes, or reversed() for iteration, understanding these methods helps you write cleaner and more efficient Python code.

Next, learn about Python string concatenation or see how to find the average of a list in Python.

Was this article helpful?
YesNo