# The difference between list.sort and sorted(list) in Python 3

The other week for my algorithms class I needed to find the minimum dot product of a list. My first try at a solution, which threw an error, was this:

def min_dot_product(a, b, n): a = sorted(a) b = sorted(b, reverse=True) res = 0 for i in range(n): res += a[i] * b[i] return res

Python has two different ways of sorting a list: `list.sort([reverse=False])`

and `sorted(list[, reverse=False])`

. Why a method and a function to do the same thing? Let's look:

li = [5, 1, 4, 3, 2] li.sort() li >>> [1, 2, 3, 4, 5] li.sort(reverse=True) li >>> [5, 4, 3, 2, 1]

`list.sort()`

sorts the list and **returns None**.

On the other hand, `sorted(list)`

sorts and **returns the list**

li = [5, 1, 4, 3, 2] sorted(li, reverse=True) >>> [5, 4, 3, 2, 1]

I've contributed the above to SO's Python documentation on lists and list methods.