# 5 Best Ways to Sort the Elements of an Array in Descending Order Using Python

Rate this post

π‘ Problem Formulation: When working with data in Python, you might encounter a situation where you need to sort the elements of an array in descending order. This could be for preparing a report, conducting data analysis, or simply organizing a list of scores. For example, given an input array `[3, 1, 4, 1, 5, 9, 2, 6]`, we aim to transform it into `[9, 6, 5, 4, 3, 2, 1, 1]`.

## Method 1: Using the `sorted()` Function with a `reverse` Argument

The `sorted()` function is a built-in Python method that returns a new sorted list from the items in an iterable. By setting the `reverse` argument to `True`, we can sort the array in descending order.

Here’s an example:

```arr = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_arr = sorted(arr, reverse=True)
print(sorted_arr)
```

Output: `[9, 6, 5, 4, 3, 2, 1, 1]`

This code snippet creates an array called `arr`, and then uses the `sorted()` function with the `reverse` parameter set to `True` to return a new list in descending order, which is then printed.

## Method 2: Using the List’s `.sort()` Method with `reverse` Argument

The method `.sort()` modifies the list in-place to order the items. With the `reverse` argument set to `True`, it sorts the array in descending order.

Here’s an example:

```arr = [3, 1, 4, 1, 5, 9, 2, 6]
arr.sort(reverse=True)
print(arr)
```

Output: `[9, 6, 5, 4, 3, 2, 1, 1]`

In this snippet, the array `arr` is sorted in-place in descending order using the `.sort()` method. The sorted array is then printed.

## Method 3: Using the `sorted()` Function with a Custom `key` Argument

The `sorted()` function can also sort an array in descending order using a custom key function that reverses the sorting order. By passing the `lambda` function `lambda x: -x` to the `key` argument, numbers are sorted as if they were negative, effectively reversing the order.

Here’s an example:

```arr = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_arr = sorted(arr, key=lambda x: -x)
print(sorted_arr)
```

Output: `[9, 6, 5, 4, 3, 2, 1, 1]`

This code utilizes a lambda function as the `key` to transform each element into its negative equivalent, consequently sorting the array in descending order when using the `sorted()` function.

## Method 4: Using a Custom Sort Function

A custom sorting function can be written to implement any sorting algorithm desired, such as the quicksort or mergesort algorithm, to sort the array in descending order. We’ll briefly mention this without an implementation detail.

## Bonus One-Liner Method 5: List Comprehension with `sorted()`

This method uses list comprehension and the built-in `sorted()` function to create a succinct one-liner that returns a sorted list in descending order.

Here’s an example:

```arr = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_arr = [x for x in sorted(arr, reverse=True)]
print(sorted_arr)
```

Output: `[9, 6, 5, 4, 3, 2, 1, 1]`

This code leverages list comprehension to iterate over a sorted version of `arr` in descending order and constructs a new list in that order.

## Summary/Discussion

• Method 1: Using `sorted()` Function with `reverse` Argument. Simple and creates a new sorted list. Not in-place.
• Method 2: Using List’s `.sort()` Method with `reverse` Argument. In-place sorting, efficient for large lists. Modifies the original list.
• Method 3: Using `sorted()` Function with a Custom `key` Argument. Offers flexibility with sorting criteria. Slightly more complex but very powerful.
• Method 4: Using a Custom Sort Function. Great for educational purposes and highly customizable. More complex and less practical for a simple task.
• Method 5: One-Liner with List Comprehension. Concise and easily understandable. Essentially the same as Method 1 but uses list comprehension.