sorted()
returns a new sorted list, leaving the original list unaffected. list.sort()
sorts the list in-place, mutating the list indices, and returns None
(like all in-place operations).
sorted()
works on any iterable, not just lists. Strings, tuples, dictionaries (you’ll get the keys), generators, etc., returning a list containing all elements, sorted.
-
Use
list.sort()
when you want to mutate the list,sorted()
when you want a new sorted object back. Usesorted()
when you want to sort something that is an iterable, not a list yet. -
For lists,
list.sort()
is faster thansorted()
because it doesn’t have to create a copy. For any other iterable, you have no choice. -
No, you cannot retrieve the original positions. Once you called
list.sort()
the original order is gone.