What is the difference between sorted(list) vs list.sort()?

list.sort() sorts the list and save the sorted list, while sorted(list) returns a sorted copy of the list, without changing the original list.

  • But when to use which?
  • And which is faster? And how much faster?
  • Can a list's original positions be retrieved after list.sort()?

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. Use sorted() when you want to sort something that is an iterable, not a list yet.

  • For lists, list.sort() is faster than sorted() 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.

From: stackoverflow.com/q/22442378

Back to homepage or read more recommendations: