How to Reverse a List in Python
What you’ll build or solve
You’ll reverse a Python list so items appear in the opposite order, either by modifying the same list or creating a new reversed copy.
When this approach works best
This approach works best when you:
Learn Python on Mimo
- Need to show the most recent items first, like the latest messages or newest records.
- Want to process items from the end to the start, like undo stacks or backtracking.
- Need to flip a list for display without changing the data source.
Avoid this approach when:
- You need items sorted by value. Reversing only changes order, it does not sort.
Prerequisites
- Python installed
- You know what a list is
Step-by-step instructions
1) Reverse a list in place with reverse()
Use list.reverse() when you want to modify the same list.
numbers= [1,2,3,4]
numbers.reverse()
print(numbers)
What to look for: reverse() returns None. It changes the list in place.
2) Create a reversed copy with reversed()
Use reversed(list) when you want to keep the original list unchanged. reversed() returns an iterator, so wrap it in list() if you want a list.
numbers= [1,2,3,4]
reversed_numbers=list(reversed(numbers))
print(reversed_numbers)
print(numbers)
What to look for: If you print reversed(numbers) directly, you will see an iterator object, not the values.
3) Create a reversed copy with slicing
Slicing with [::-1] returns a new list in reverse order.
names= ["Ada","Mina","Sam"]
names_reversed=names[::-1]
print(names_reversed)
print(names)
This is concise and works well for simple cases.
4) Loop in reverse order without changing the list
If you only need to iterate in reverse order, loop over reversed(your_list).
tasks= ["plan","build","test"]
fortaskinreversed(tasks):
print(task)
What to look for: This keeps tasks unchanged, which helps if other code relies on its original order.
Examples you can copy
Example 1: Reverse a list of recent messages in place
messages= ["hello","are you there","ok"]
messages.reverse()
print(messages)
Example 2: Keep the original list and build a reversed copy
scores= [10,5,25,7]
scores_desc=list(reversed(scores))
print("reversed:",scores_desc)
print("original:",scores)
Example 3: Loop from last to first without copying
pages= ["home","pricing","checkout"]
forpageinreversed(pages):
print("Visited:",page)
Example 4: Reverse only part of a list
items= ["a","b","c","d","e"]
# Reverse only items 1–3 (indices 1, 2, 3)
items[1:4]=reversed(items[1:4])
print(items)
Common mistakes and how to fix them
Mistake 1: Saving the result of .reverse()
What you might do:
numbers= [1,2,3]
result=numbers.reverse()
print(result)
Why it breaks: .reverse() returns None, so result is not the reversed list.
Correct approach: Reverse in place or make a copy.
numbers= [1,2,3]
numbers.reverse()
print(numbers)
numbers= [1,2,3]
result=numbers[::-1]
print(result)
Mistake 2: Reusing a reversed() iterator after it’s consumed
What you might do:
numbers= [1,2,3]
it=reversed(numbers)
print(list(it))
print(list(it))
Why it breaks: Iterators get consumed. After the first list(it), there are no items left.
Correct approach: Recreate the iterator or store the list.
numbers= [1,2,3]
print(list(reversed(numbers)))
print(list(reversed(numbers)))
numbers= [1,2,3]
rev_list=list(reversed(numbers))
print(rev_list)
print(rev_list)
Troubleshooting
If you see None after reversing, do this: you probably used result = my_list.reverse(). Use my_list.reverse() without assignment, or use my_list[::-1].
If you see an object like <list_reverseiterator ...>, do this: wrap it in list(reversed(my_list)).
If your loop prints nothing the second time, do this: you reused a consumed iterator. Call reversed() again.
If reversing changed data you needed later, do this: use reversed() or slicing to make a copy instead of modifying the original list.
Quick recap
- Use
my_list.reverse()to reverse the list in place. - Use
list(reversed(my_list))to keep the original list unchanged. - Use
my_list[::-1]for a quick reversed copy. - Use
for x in reversed(my_list)to loop in reverse without changing the list.
Join 35M+ people learning for free on Mimo
4.8 out of 5 across 1M+ reviews
Check us out on Apple AppStore, Google Play Store, and Trustpilot