Как отсортировать список в Python (по возрастанию и убыванию)

Узнайте, как сортировать список в Python с помощью метода sort() и функции sorted(). Ознакомьтесь с примерами пользовательской сортировки ключей и обратного порядка.

Попробуйте это решение в редакторе

Обзор

Сортировка данных — одна из наиболее распространенных задач в программировании, независимо от того, упорядочиваете ли вы профили пользователей по возрасту, перечисляете продукты по цене или организуете результаты поиска. Python предлагает два встроенных, высокооптимизированных способа сортировки списков: метод list.sort() и функцию sorted(). Оба используют высокоэффективный алгоритм сортировки под названием Timsort, который работает с временной сложностью O(N log N).

Ключевое различие между ними — изменчивость. Метод list.sort() сортирует список на месте, то есть он напрямую изменяет исходный список и возвращает None. С другой стороны, функция sorted() оставляет исходный список неизмененным и возвращает совершенно новый отсортированный список. Это различие имеет решающее значение: используйте sort(), когда вы хотите сэкономить память и вам не нужен исходный порядок, и используйте sorted(), когда вам нужно сохранить исходный список нетронутым или при сортировке итераций, не входящих в список, таких как кортежи или словари.

Оба метода сортировки принимают два необязательных аргумента ключевого слова: «reverse» и «key». Аргумент `reverse` является логическим значением; установка значения «True» сортирует список в порядке убывания (обратного). Аргумент `key` принимает функцию, которая применяется к каждому элементу перед сравнением. Это позволяет использовать сложную логику сортировки, например сортировку списка строк по их длине или сортировку списка словарей по определенному ключу.

Код и вывод выполнения

Этот код демонстрирует сортировку списка чисел с использованием методов sort() и sorted(), обратную сортировку и сортировку настраиваемых ключей по длине строки.

numbers = [42, 7, 12, 89, 23]

# 1. Using sorted() (returns new list)
new_sorted = sorted(numbers)
print("Original:", numbers)
print("Sorted new list:", new_sorted)

# 2. Using sort() (in-place modification)
numbers.sort()
print("Modified original list:", numbers)

# 3. Sorting in reverse (descending)
numbers.sort(reverse=True)
print("Reverse sorted list:", numbers)

# 4. Custom sorting (by string length)
words = ["banana", "pear", "apple", "fig"]
words.sort(key=len)
print("Sorted by length:", words)
Терминальный выход
Original: [42, 7, 12, 89, 23]
Sorted new list: [7, 12, 23, 42, 89]
Modified original list: [7, 12, 23, 42, 89]
Reverse sorted list: [89, 42, 23, 12, 7]
Sorted by length: ['fig', 'pear', 'apple', 'banana']

Пошаговая реализация

  • Используйте функцию sorted() для сортировки копии списка без изменения исходных данных.
  • Используйте метод .sort() непосредственно в объекте списка, чтобы изменить его на месте и сэкономить память.
  • Передайтеverse=True в качестве параметра, чтобы отсортировать элементы в порядке убывания.
  • Используйте key=lambda x: ... для сортировки элементов на основе настраиваемого свойства (например, длины или вложенных значений).

Часто задаваемые вопросы

В чем разница между list.sort() и sorted()?

list.sort() изменяет список на месте и возвращает None, а sorted() оставляет исходный список без изменений и возвращает новый отсортированный список.

Как отсортировать список словарей по ключу?

Используйте ключевой параметр с лямбда-функцией или оператором.itemgetter. Например: list.sort(key=lambda item: item["возраст"]).

Связанные темы

Рекомендуемые ресурсы Python

Расширьте свои знания с помощью соответствующих интерактивных руководств, шпаргалок и сравнений кода.