In this tutorial, you will learn how to sort a list in Python, by following the below three steps:

1. Options to sort a list in Python
• What is the difference between “sort” and “sorted”
• An example of using “sort”
• An example of using “sorted”
2. How to Sort a List in Reverse
• Sort a list in Reverse using “sort”
• Sort a list in Reverse using “sorted”
3. Sort with a Custom Function using Key

## 1. Options to sort a list in Python

There exist two main options, those are `sort()` and `sorted()`, let’s explore them below.

### What is the difference between “sort” and “sorted”

`list.sort()` changes the list in place and returns `None`.

`sorted()` takes an iterable and returns a new list, sorted.

### An example of using “sort”

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 `````` ``````# create a list of unordered items our_list = ["f", "a", "c", "z", "b"] # sort the list new_list = our_list.sort() # print the new list print(new_list) # result: None print(our_list) # result: ['a', 'b', 'c', 'f', 'z'] ``````

Notice how it changes the list itself, but does not return a value to be placed into a new variable.

### An example of using “sorted”

 `````` 1 2 3 4 5 6 7 8 9 10 `````` ``````# create a list of unordered items our_list = ["f", "a", "c", "z", "b"] # sort the list new_list = sorted(our_list) # print the new list print(new_list) # result: ['a', 'b', 'c', 'f', 'z'] ``````

Notice how the changes are saved to the new list/variable.

## 2. How to Sort a List in Reverse

Using the above functions, it’s simple to sort a list in reverse. Just specify the `reverse` argument and set it to `True`.

### Sort a List in Reverse using “sort”

 ``````1 2 3 4 5 6 7 8 `````` ``````# create a list of unordered items our_list = ["f", "a", "c", "z", "b"] # sort the list new_list = our_list.sort(reverse=True) print(our_list) # result: ['z', 'f', 'c', 'b', 'a'] ``````

### Sort a List in Reverse using “sorted”

 `````` 1 2 3 4 5 6 7 8 9 10 `````` ``````# create a list of unordered items our_list = ["f", "a", "c", "z", "b"] # sort the list new_list = sorted(our_list, reverse=True) # print the new list print(new_list) # result: ['z', 'f', 'c', 'b', 'a'] ``````

## 3. Sort with a Custom Function using Key

It is also possible to implement your own sorting method. This is done by adding a `key` parameter and setting it to a method.

For example:

 `````` 1 2 3 4 5 6 7 8 9 10 `````` ``````# create a list of different length items our_list = ["fasd", "asstt", "cqasf", "zqfwsef", "ba"] # sort the list, by `len` new_list = sorted(our_list, key=len) # print the new list print(new_list) # result: ['ba', 'fasd', 'asstt', 'cqasf', 'zqfwsef'] ``````

Just as we used `sorted` here, you could also have used `list.sort` as follows:

 ``````1 `````` ``````our_list.sort(key=len) ``````

As before, you can also combine the `reverse=True` argument should you want the reverse order.

 ``````1 2 3 4 5 `````` ``````our_list.sort(key=len, reverse=True) # or sorted(our_list, key=len, reverse=True) ``````

You could also swap out the use of the `len` method as the custom `key` with your own function, or lambda, to sort by some custom choice.

For example:

 ``````1 2 3 4 `````` ``````student_tuples = [('john', 'A', 15),('jane', 'B', 12),('dave', 'B', 10),] sorted(student_tuples, key=lambda student: student[2]) # result: [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] ``````

Or in another example:

 ``````1 2 3 4 5 `````` ``````lst = [('candy','30','100'), ('apple','10','200'), ('baby','20','300')] lst.sort(key=lambda x:x[1]) print(lst) # result: [('apple', '10', '200'), ('baby', '20', '300'), ('candy', '30', '100')] ``````