Lessons · Python · sort() vs sorted()
Sorting in place versus sorting a copy
list.sort() sorts the list itself and returns None; sorted(x) leaves x alone and returns a new sorted list.
Hone is a place to practise programming. This is one of its lessons, written out in full and free to read without an account.
What it is for
x = x.sort() is a classic that leaves you with None. And sorting the caller's list in place can quietly break their code.
How to think about it
Ask: do I own this list, and do I want it changed? Yes: .sort(). Otherwise, or when the input is not a list (a tuple, a dict's keys): sorted().
Worked example
scores = [3, 1, 2]Unsorted input.
ordered = sorted(scores)New list [1, 2, 3]; scores is still [3, 1, 2].
scores.sort()Now scores itself is [1, 2, 3]. Returns None.
print(sorted({"b": 1, "a": 2}))["a", "b"]: sorted() works on anything iterable.Your turn
Get a sorted copy without changing the original.
ranked = (scores, reverse=True)
Solve one with the tests running
The trap
result = items.sort() then using result. It is None. Either use items afterwards, or use sorted().
Practise sort() vs sorted() on HoneA question on it now, a coding challenge where there is one, and it is remembered for review. Free, no email needed.