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

后端 未结 6 2185
温柔的废话
温柔的废话 2020-11-22 09:19

list.sort() sorts the list and replaces the original list, whereas sorted(list) returns a sorted copy of the list, without changing the original li

6条回答
  •  日久生厌
    2020-11-22 09:52

    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.

提交回复
热议问题