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.