newlist = oldlist[::-1]

The [::-1] slicing (which my wife Anna likes to call "the Martian smiley";-) means: slice the whole sequence, with a step of -1, i.e., in reverse. It works for all sequences.

Note that this (and the alternatives you mentioned) is equivalent to a "shallow copy", i.e.: if the items are mutable and you call mutators on them, the mutations in the items held in the original list are also in the items in the reversed list, and vice versa. If you need to avoid that, a copy.deepcopy (while always a potentially costly operation), followed in this case by a .reverse, is the only good option.

Answer from Alex Martelli on Stack Overflow
Top answer
1 of 3
243
newlist = oldlist[::-1]

The [::-1] slicing (which my wife Anna likes to call "the Martian smiley";-) means: slice the whole sequence, with a step of -1, i.e., in reverse. It works for all sequences.

Note that this (and the alternatives you mentioned) is equivalent to a "shallow copy", i.e.: if the items are mutable and you call mutators on them, the mutations in the items held in the original list are also in the items in the reversed list, and vice versa. If you need to avoid that, a copy.deepcopy (while always a potentially costly operation), followed in this case by a .reverse, is the only good option.

2 of 3
68

Now let's timeit. Hint: Alex's [::-1] is fastest :)

$ p -m timeit "ol = [1, 2, 3]; nl = list(reversed(ol))"
100000 loops, best of 3: 2.34 usec per loop

$ p -m timeit "ol = [1, 2, 3]; nl = list(ol); nl.reverse();"
1000000 loops, best of 3: 0.686 usec per loop

$ p -m timeit "ol = [1, 2, 3]; nl = ol[::-1];"
1000000 loops, best of 3: 0.569 usec per loop

$ p -m timeit "ol = [1, 2, 3]; nl = [i for i in reversed(ol)];"
1000000 loops, best of 3: 1.48 usec per loop


$ p -m timeit "ol = [1, 2, 3]*1000; nl = list(reversed(ol))"
10000 loops, best of 3: 44.7 usec per loop

$ p -m timeit "ol = [1, 2, 3]*1000; nl = list(ol); nl.reverse();"
10000 loops, best of 3: 27.2 usec per loop

$ p -m timeit "ol = [1, 2, 3]*1000; nl = ol[::-1];"
10000 loops, best of 3: 24.3 usec per loop

$ p -m timeit "ol = [1, 2, 3]*1000; nl = [i for i in reversed(ol)];"
10000 loops, best of 3: 155 usec per loop

Update: Added list comp method suggested by inspectorG4dget. I'll let the results speak for themselves.

🌐
GeeksforGeeks
geeksforgeeks.org › python › python-reversing-list
Reversing a List in Python - GeeksforGeeks
Let's see other different methods to reverse a list. reverse() method reverses the elements of the list in-place and it modify the original list without creating a new list. ... This method builds a reversed version of the list using slicing ...
Published   November 26, 2025
Discussions

python - How do I reverse a list or loop over it backwards? - Stack Overflow
Python 3.11 was 26.5% faster on average, roughly the same for manual as for built in methods of reversing lists. ... I find (contrary to some other suggestions) that l.reverse() is by far the fastest way to reverse a long list in Python 3 and 2. More on stackoverflow.com
🌐 stackoverflow.com
How to reverse a Python list (3 methods)
Well don't forget about doing it by hand! print(list(lst[i] for i in range(-1, -len(lst)-1, -1))) More on reddit.com
🌐 r/Python
4
0
February 19, 2022
Lazy Reverse Method in O(1) Time
There is reversed(list_object). More on reddit.com
🌐 r/Python
45
27
July 7, 2024
Reversing a simple list without reverse function
How would you reverse it given a piece of paper and a pen? More on reddit.com
🌐 r/learnpython
11
6
October 12, 2014
🌐
DataCamp
datacamp.com › tutorial › python-reverse-list
Python Reverse List: How to Reorder Your Data | DataCamp
February 27, 2025 - List slicing ([::-1]) is a quick and readable way to reverse a list, but it creates a new list in memory, leading to high memory consumption for large lists. Pitfall: Slicing on large lists leads to unnecessary memory usage and reduced performance. Solution: Use the reversed() function, which ...
🌐
Codecademy
codecademy.com › article › how-to-reverse-a-list-in-python
How to Reverse a List in Python | Codecademy
Learn how to reverse a list in Python using `.reverse()`, `reversed()`, slicing, the two-pointer method, loops, and recursion with examples.
🌐
Real Python
realpython.com › python-reverse-list
Reverse Python Lists: Beyond .reverse() and reversed() – Real Python
June 28, 2023 - In general, there are two main challenges related to working with lists in reverse: ... To meet the first challenge, you can use either .reverse() or a loop that swaps items by index.
🌐
Reddit
reddit.com › r/python › how to reverse a python list (3 methods)
r/Python on Reddit: How to reverse a Python list (3 methods)
February 19, 2022 -

There are three methods you can use to reverse a list:

  1. An in-place reverse, using the built-in reverse method that every list has natively

  2. Using list slicing with a negative step size, resulting in a new list

  3. Create a reverse iterator, with the reversed() function

You can try this for yourself too. Click here to open a runnable/editable example.

Find elsewhere
🌐
W3Schools
w3schools.com › python › ref_list_reverse.asp
Python List reverse() Method
The built-in function reversed() returns a reversed iterator object. ... If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail: sales@w3schools.com · If you want to report an error, or if you want to make a suggestion, send us an e-mail: help@w3schools.com · HTML Tutorial CSS Tutorial JavaScript Tutorial How To Tutorial SQL Tutorial Python Tutorial W3.CSS Tutorial Bootstrap Tutorial PHP Tutorial Java Tutorial C++ Tutorial jQuery Tutorial
🌐
Towards Data Science
towardsdatascience.com › home › latest › how to reverse python lists more efficiently
How To Reverse Python Lists More Efficiently | Towards Data Science
January 20, 2025 - If you are looking into reversing the elements of a list in-place (meaning that you don’t actually want to create another copy of the original list) then list.reverse() method is the most efficient way to do so.
🌐
datagy
datagy.io › home › python posts › how to reverse a python list (6 ways)
How to Reverse a Python List (6 Ways) • datagy
February 15, 2023 - The fastest way to reverse a list in Python is to use a for loop (or a list comprehension).
🌐
CodeConverter
codeconverter.com › articles › python-reverse-a-list
Python: 6 Ways to Reverse a List (With Benchmarks) | CodeConverter Blog
February 12, 2026 - Reverse() method: 0.0023 Slicing method: 0.0123 Reversed() method: 0.0156 As expected, the `reverse()` method is the fastest, followed closely by slicing. The `reversed()` method is the slowest due to the overhead of creating an iterator. But what about custom objects?
🌐
Programiz
programiz.com › python-programming › methods › list › reverse
Python List reverse()
If you need to access individual elements of a list in the reverse order, it's better to use the reversed() function. # Operating System List systems = ['Windows', 'macOS', 'Linux'] # Printing Elements in Reversed Order
🌐
Cherry Servers
cherryservers.com › home › blog › python › how to reverse a list in python (using 3 simple ways)
How to Reverse a List in Python (Using 3 Simple Ways) | Cherry Servers
November 7, 2025 - Benefit from an open cloud ecosystem with seamless API & integrations and a Python library. ... To reverse a list in Python, two basic methods are commonly used, the built-in reverse() method and slicing with [::-1].
🌐
Mimo
mimo.org › glossary › python › list-reverse-method
Python List reverse() Method: Syntax, Methods, and Examples
Learn how to reverse a list in Python using slicing, reverse(), reversed(), and loops. Compare methods, use cases, and performance best practices.
🌐
HackerNoon
hackernoon.com › 3-efficient-ways-to-reverse-a-list-in-python
3 Efficient Ways to Reverse a List in Python | HackerNoon
October 15, 2021 - Reversing a list is a common requirement in any programming language. In this tutorial, we will learn the effective way to reverse a list in Python.
🌐
Upgrad
upgrad.com › home › tutorials › software & tech › how to reverse a list in python?
Reversing a List in Python
November 11, 2024 - With this How to reverse a list in Python knowledge, Python programmers can better tackle a wide array of programming tasks. Slicing with a step of -1 creates a new list with the elements in reverse order. It's a concise and efficient way to ...
🌐
Scaler
scaler.com › home › topics › python list reverse()
Python List reverse() - Scaler Topics
May 7, 2024 - The insert() function can be used to insert each element at the beginning of a new list, effectively reversing the order. ... List comprehension provides a concise way to reverse a list by iterating over the original list in reverse order.
🌐
Stonecharioteer
tech.stonecharioteer.com › posts › python reverse a list
Python Reverse a List | Stonecharioteer on Tech
April 13, 2025 - Comparing three methods to reverse lists in Python: slice notation, reversed(), and .reverse(). Includes performance benchmarks and readability considerations. ... Of these three ways, I prefer using reversed because it is readable and there’s no ambiguity about whether it does it in place or not.
🌐
dbader.org
dbader.org › blog › python-reverse-list
How to Reverse a List in Python – dbader.org
July 11, 2017 - Here’s how you can create a copy ... by setting the step to -1. Pretty neat, eh? Reversing a list using reverse iteration with the reversed() built-in is another option....
🌐
Reddit
reddit.com › r/python › lazy reverse method in o(1) time
r/Python on Reddit: Lazy Reverse Method in O(1) Time
July 7, 2024 -

Why not make the list.reverse method in Python perform a lazy reverse? Instead of changing the underlying structure, it would adjust array operations so that [i] becomes [-i-1] and all iterations go backwards. This way, the list would appear reversed without actually modifying its structure.

The list would maintain this lazy reverse state for operations like insert, remove, index, iteration, and array access/editing. If an operation like + or .append is called, only then would the list be physically reversed.

In most programs, lists aren't typically appended to after being reversed. Implementing this could save time, making reversing an O(1) operation.

Note: Lazy reverse could be off by default, where you have to specify a parameter to be true to turn it on, or it could be a separate method.