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, and reversed()

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 listreverse()
  • Make a new list[::-1]
  • Loop in reversereversed()

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 order
  • sorted(numbers) puts values in ascending order
  • sorted(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']

See also