How to Reverse a List in Python
If you want to reverse a list in Python, there are a few simple ways to do it.
The main choice is this:
- Do you want to change the original list?
- Or do you want to make a new reversed copy?
This page shows the easiest beginner-friendly methods and explains the difference between reverse(), slicing, and reversed().
Quick answer
numbers = [1, 2, 3, 4]
# Change the original list
numbers.reverse()
print(numbers)
# Or make a reversed copy
numbers = [1, 2, 3, 4]
reversed_numbers = numbers[::-1]
print(reversed_numbers)
Use list.reverse() to reverse the same list. Use slicing [::-1] if you want a new reversed list.
What this page helps you do
- Reverse a list in the simplest beginner-friendly ways
- Choose between changing the original list or creating a new one
- Understand the difference between
reverse(), slicing, andreversed()
Method 1: Use list.reverse()
Use reverse() when you want to modify the original list.
Important points:
- It reverses the list in place
- It changes the original list
- It does not return a new list
Example
numbers = [1, 2, 3, 4]
numbers.reverse()
print(numbers)
Output:
[4, 3, 2, 1]
Why beginners get confused
A very common mistake is writing this:
numbers = [1, 2, 3, 4]
result = numbers.reverse()
print(result)
print(numbers)
Output:
None
[4, 3, 2, 1]
reverse() returns None because it changes the list directly.
If you want to learn more about this method, see the list.reverse() method reference.
Method 2: Use slicing with [::-1]
Use slicing when you want a reversed copy and want to keep the original list unchanged.
Example
numbers = [1, 2, 3, 4]
reversed_numbers = numbers[::-1]
print(numbers)
print(reversed_numbers)
Output:
[1, 2, 3, 4]
[4, 3, 2, 1]
This is useful when you need both versions:
- the original list
- the reversed list
Slicing with [::-1] is short and very common in Python.
If slicing feels unclear, read Python list slicing explained.
Method 3: Use reversed()
The reversed() function gives you the items in reverse order, but it does not return a list directly.
It returns an iterator.
Example: convert it to a list
numbers = [1, 2, 3, 4]
reversed_numbers = list(reversed(numbers))
print(reversed_numbers)
Output:
[4, 3, 2, 1]
Example: use it in a loop
numbers = [1, 2, 3, 4]
for item in reversed(numbers):
print(item)
Output:
4
3
2
1
This method is useful when:
- you want to loop through items in reverse order
- you want to pass reversed values into another operation
- you do not need to change the original list
How to choose the right method
Choose based on what you need:
- Use
reverse()to modify the existing list - Use
[::-1]to create a separate reversed list - Use
reversed()when you need an iterator or want to loop in reverse order
A simple rule:
- Change the same list →
reverse() - Make a new list →
[::-1] - Loop in reverse →
reversed()
Common mistakes
1. Writing new_list = my_list.reverse()
This gives you None, not the reversed list.
my_list = [1, 2, 3]
new_list = my_list.reverse()
print(new_list)
print(my_list)
Output:
None
[3, 2, 1]
2. Expecting reversed() to print like a normal list
my_list = [1, 2, 3]
result = reversed(my_list)
print(result)
Output will look something like this:
<list_reverseiterator object at ...>
If you want a list, convert it:
my_list = [1, 2, 3]
result = list(reversed(my_list))
print(result)
3. Forgetting that reverse() changes the original list
my_list = [1, 2, 3]
my_list.reverse()
print(my_list)
After this, the original order is gone unless you made a copy first.
If you need the original too, see how to copy a list in Python.
Extra note: reversing is not the same as sorting
Reversing and sorting are different operations.
- Reversing changes the order from end to start
- Sorting arranges items by value
Example:
numbers = [3, 1, 4, 2]
print(numbers[::-1])
print(sorted(numbers))
print(sorted(numbers, reverse=True))
Output:
[2, 4, 1, 3]
[1, 2, 3, 4]
[4, 3, 2, 1]
Notice:
numbers[::-1]only flips the current ordersorted(numbers)puts values in ascending ordersorted(numbers, reverse=True)sorts values from largest to smallest
If you want to sort instead of reverse, read how to sort a list in Python or the sorted() function reference.
FAQ
How do I reverse a list without changing the original?
Use slicing with [::-1] or list(reversed(my_list)). Both create a new reversed list.
Why does list.reverse() return None?
Because reverse() changes the list in place instead of creating and returning a new list.
What is the difference between reverse() and reversed()?
reverse() changes the original list. reversed() gives you an iterator over the items in reverse order.
Can I reverse a list of strings or mixed values?
Yes. Reversing changes item order only. It does not depend on item type.
Example:
items = ["apple", 10, True, "banana"]
print(items[::-1])
Output:
['banana', True, 10, 'apple']