Ответ
Ключевое различие заключается в том, что .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(), когда нужно сохранить исходную коллекцию неизменной или отсортировать объект, который не является списком (например, кортеж).