Of course! In Python, you can sort lists in reverse order using the reverse parameter in the sort() method or the sorted() function.

Here’s a complete guide covering both methods, their differences, and best practices.
The list.sort() Method (In-place)
This method sorts the list in-place, meaning it modifies the original list directly and returns None.
Syntax
my_list.sort(reverse=True)
Key Characteristics:
- In-place: The original list is changed.
- Returns:
None. This is a very common point of confusion for beginners. - Only for Lists: You can only call this method on lists.
Example
# Original list numbers = [3, 1, 4, 1, 5, 9, 2, 6] # Sort the list in reverse order (in-place) numbers.sort(reverse=True) # The original list is now modified print(numbers) # Output: [9, 6, 5, 4, 3, 2, 1, 1]
Common Mistake
A frequent error is trying to assign the result of list.sort() to a new variable.
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
new_numbers = numbers.sort(reverse=True) # This is incorrect!
print(f"new_numbers: {new_numbers}")
# Output: new_numbers: None
print(f"numbers: {numbers}")
# Output: numbers: [9, 6, 5, 4, 3, 2, 1, 1]
As you can see, new_numbers becomes None, and numbers is the sorted list.

The sorted() Function (Out-of-place)
This is a built-in function that returns a new sorted list, leaving the original list unchanged.
Syntax
new_sorted_list = sorted(my_list, reverse=True)
Key Characteristics:
- Out-of-place: The original list is not modified.
- Returns: A new, sorted list.
- Universal: Works on any iterable (lists, tuples, strings, etc.), not just lists.
Example
# Original list
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
# Create a new list that is sorted in reverse order
sorted_numbers = sorted(numbers, reverse=True)
# The original list remains unchanged
print(f"Original list: {numbers}")
# Output: Original list: [3, 1, 4, 1, 5, 9, 2, 6]
# The new variable holds the sorted list
print(f"New sorted list: {sorted_numbers}")
# Output: New sorted list: [9, 6, 5, 4, 3, 2, 1, 1]
Summary: list.sort() vs. sorted()
| Feature | list.sort() |
sorted() |
|---|---|---|
| Action | Sorts the list in-place. | Returns a new sorted list. |
| Return Value | None |
A new sorted list. |
| Original List | Modified. | Unchanged. |
| Usage | my_list.sort() |
new_list = sorted(my_list) |
| Applicability | Only for list objects. |
Works on any iterable (list, tuple, etc.). |
Which one should you use?
- Use
sorted()when you need to keep the original list intact or when you are working with other iterables like tuples. - Use
list.sort()when you are sure you don't need the original list anymore and want to save memory by sorting in-place.
Sorting in Reverse with Different Data Types
The reverse=True parameter works for any data type that can be sorted.
Example with Strings (Alphabetical Order)
words = ["banana", "apple", "cherry", "date"] # Sort alphabetically in reverse (Z to A) words.sort(reverse=True) print(words) # Output: ['date', 'cherry', 'banana', 'apple']
Example with Tuples (using sorted())
# A tuple of tuples points = (1, 5), (3, 2), (8, 1), (4, 4) # Sort by the second element of each tuple in reverse # The `key` argument specifies what to sort by sorted_points = sorted(points, key=lambda x: x[1], reverse=True) print(sorted_points) # Output: [(1, 5), (4, 4), (3, 2), (8, 1)]
Quick Reference
| Goal | Method | Code Example |
|---|---|---|
| Sort list in-place (descending) | list.sort() |
my_list.sort(reverse=True) |
| Create a new sorted list (descending) | sorted() |
new_list = sorted(my_list, reverse=True) |
| Sort list in-place (ascending) | list.sort() |
my_list.sort() or my_list.sort(reverse=False) |
| Create a new sorted list (ascending) | sorted() |
new_list = sorted(my_list) |

