В чём отличие `sort()` и `sorted()`?

  • sort() - это метод списка (list), который сортирует список на месте, изменяя его. Возвращает None.
  • sorted() - это встроенная функция, которая принимает итерируемый объект (например, список, кортеж) и возвращает новый отсортированный список. Исходный итерируемый объект не изменяется.

Различия между sort() и sorted() в Python:

sort():

  • Является методом списка (list).
  • Изменяет сам список "на месте" (in-place). То есть, оригинальный список перезаписывается отсортированной версией.
  • Не возвращает новый список. Возвращает None. Поэтому, если попытаться присвоить результат sort() переменной, переменная будет содержать None.
  • Применяется только к спискам.

sorted():

  • Является встроенной функцией (built-in function).
  • Не изменяет оригинальную коллекцию.
  • Возвращает новый отсортированный список. Оригинальная коллекция остаётся неизменной.
  • Может применяться к любой итерируемой коллекции (iterable), такой как списки, кортежи, строки, множества и словари (в случае словарей сортируются ключи).

Краткий пример:

    
      # Пример со sort()
      my_list = [3, 1, 4, 1, 5, 9, 2, 6]
      result = my_list.sort()
      print(my_list)  # Вывод: [1, 1, 2, 3, 4, 5, 6, 9]  (список изменён)
      print(result)   # Вывод: None (метод sort() не возвращает ничего)

      # Пример с sorted()
      my_tuple = (3, 1, 4, 1, 5, 9, 2, 6)
      sorted_tuple = sorted(my_tuple)
      print(my_tuple)      # Вывод: (3, 1, 4, 1, 5, 9, 2, 6) (кортеж не изменён)
      print(sorted_tuple) # Вывод: [1, 1, 2, 3, 4, 5, 6, 9] (новый отсортированный список)
    
  

Когда что использовать:

  • Если нужно отсортировать список "на месте" и не нужно сохранять оригинальную версию, используйте sort() (это обычно быстрее и эффективнее по памяти).
  • Если нужно сохранить оригинальную коллекцию и получить её отсортированную копию, используйте sorted(). Также sorted() подходит для сортировки коллекций, отличных от списков.
0