Добавить в корзинуПозвонить
Найти в Дзене
Технологии

Сортировка в Python: отличие метода sort от функции sorted()

Методы sort() и функция sorted() используются в Python для сортировки элементов последовательности (списков, кортежей, строк). Несмотря на схожесть названия, между ними существуют важные различия. Метод .sort() применяется непосредственно к спискам и сортирует элементы списка на месте, изменяя исходный список. Возвращаемое значение — None. Основные особенности метода .sort(): Пример: my_list = [3, 1, 4, 1, 5] my_list.sort() print(my_list) # Результат: [1, 1, 3, 4, 5] Пример с параметром key: words = ["apple", "banana", "cherry"] words.sort(key=len) print(words) # Результат: ['apple', 'cherry', 'banana'] Пример с параметром reverse=True: numbers = [3, 1, 4, 1, 5] numbers.sort(reverse=True) print(numbers) # Результат: [5, 4, 3, 1, 1] Функция sorted() создает новый отсортированный список, не меняя исходный объект. Она универсальна и работает с любыми последовательностями, включая списки, кортежи, множества и даже строки. Пример: original_list = [3, 1, 4, 1, 5] new_sorted_list = sorted(o
Оглавление

Методы sort() и функция sorted() используются в Python для сортировки элементов последовательности (списков, кортежей, строк). Несмотря на схожесть названия, между ними существуют важные различия.

Девочка сортирует подарочные коробки
Девочка сортирует подарочные коробки

Сортировка списков методом .sort()

Метод .sort() применяется непосредственно к спискам и сортирует элементы списка на месте, изменяя исходный список. Возвращаемое значение — None.

Основные особенности метода .sort():

  • Работает только со списком (list).
  • Изменяет сам объект, не создавая новый отсортированный список.
  • Если вызвать метод дважды подряд, второй раз ничего не произойдет (уже отсортированные элементы останутся на своих местах).
  • Может вызывать ошибку, если типы элементов в списке несравнимы друг с другом (например, строки и числа вместе).

Пример:

my_list = [3, 1, 4, 1, 5]
my_list.sort()
print(my_list) # Результат: [1, 1, 3, 4, 5]

Параметры метода .sort():

  • key: Функция, принимающая один аргумент и возвращающая ключ для сравнения. Например, можно сортировать объекты по длине строки, по значению атрибута класса и т.п.
  • reverse: Логический параметр, определяющий порядок сортировки (по умолчанию False — сортировка по возрастанию, True — по убыванию).

Пример с параметром key:

words = ["apple", "banana", "cherry"]
words.sort(key=len)
print(words)
# Результат: ['apple', 'cherry', 'banana']

Пример с параметром reverse=True:

numbers = [3, 1, 4, 1, 5]
numbers.sort(reverse=True)
print(numbers)
# Результат: [5, 4, 3, 1, 1]

Функция сортировки последовательностей sorted()

Функция sorted() создает новый отсортированный список, не меняя исходный объект. Она универсальна и работает с любыми последовательностями, включая списки, кортежи, множества и даже строки.

Особенности функции sorted():

  • Создает новый список, оставляя исходный неизмененным.
  • Применима ко многим видам объектов, а не только к спискам.
  • Удобна, когда важно сохранить оригинальную последовательность.

Пример:

original_list = [3, 1, 4, 1, 5]
new_sorted_list = sorted(original_list)
print(new_sorted_list)
# Результат: [1, 1, 3, 4, 5]

Параметры функции sorted() аналогичны параметрам метода .sort():

  • key: Определяет способ сортировки, аналогичный методу .sort().
  • reverse: Позволяет изменить направление сортировки.

Пример с использованием key и reverse:

names = ["Alice", "Bob", "Charlie"]
result = sorted(names, key=lambda x: len(x), reverse=True)
print(result)
# Результат: ['Charlie', 'Alice', 'Bob']

Итоги:

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

Оба подхода поддерживают гибкую настройку порядка сортировки благодаря использованию ключа (key) и возможности задать обратную сортировку (reverse).