В чем разница между методом sort() и функцией sorted() в Python

Ответ

Ключевое различие заключается в том, что .sort() изменяет список на месте (in-place), а sorted() возвращает новый отсортированный список, не изменяя оригинал.

list.sort() — метод

  • Применяется только к спискам (list).
  • Сортирует исходный список, изменяя его.
  • Возвращает None.

sorted() — встроенная функция

  • Принимает любой итерируемый объект (список, кортеж, строку, словарь и т.д.).
  • Возвращает новый отсортированный список.
  • Не изменяет исходный объект.

Практический пример:

# --- Использование метода .sort() ---
numbers_list = [3, 1, 4, 2]
print(f"Исходный список: {numbers_list}")

result = numbers_list.sort() # Сортирует список на месте

print(f"Результат вызова .sort(): {result}") # Выведет: None
print(f"Список после .sort(): {numbers_list}") # Выведет: [1, 2, 3, 4]

# --- Использование функции sorted() ---
numbers_tuple = (3, 1, 4, 2)
print(f"nИсходный кортеж: {numbers_tuple}")

new_sorted_list = sorted(numbers_tuple) # Создает новый список

print(f"Результат вызова sorted(): {new_sorted_list}") # Выведет: [1, 2, 3, 4]
print(f"Исходный кортеж не изменился: {numbers_tuple}") # Выведет: (3, 1, 4, 2)

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

  • Используйте .sort(), если вам больше не нужен исходный порядок элементов и вы хотите избежать создания нового списка для экономии памяти.
  • Используйте sorted(), когда нужно сохранить исходную коллекцию неизменной или отсортировать объект, который не является списком (например, кортеж).