Статья Автор: Деникина Н.В., Деникин А.В.

Сортировка данных (Python)

Сортировка данных

В Python есть две функции встроенной сортировки. Работают они одинаково, используя алгоритм TimSort. Разница заключается лишь в том, что функция sort() изменяет исходный список, а функция sorted() создает новый отсортированный.
Пример использования функции sort() для сортировки списка:


Функция sort() также может принимать параметры для управления сортировкой. Например, параметр reverse=True используется для сортировки в обратном порядке.


Также можно использовать параметр key, чтобы определить функцию для сравнения элементов. Например, чтобы сортировать строки по их длине нужно параметру key присвоить функцию вычисления длины строки len.


В Python можно использовать лямбда-функции вместе с функцией sort() для определения критерия сортировки. Лямбда-функция - это анонимная функция, которая может быть определена в одной строке без имени. Она часто используется вместе с функциями высшего порядка, такими как sort(), чтобы определить специфический критерий сортировки. Пример использования лямбда-функции в sort() для сортировки списка строк по их длине:


Для сортировки списка чисел по нескольким критериям (например, по последней цифре и по убыванию значений в случае равенства последних цифр) можно использовать лямбда-функции вместе с функцией sort(). Пример кода:


В коде выше метод sort() принимает аргумент key, который является функцией, определяющей ключ сортировки для каждого элемента списка. В данном случае используется лямбда-функция, которая принимает элемент списка x и возвращает кортеж из двух значений: первое значение - это остаток от деления числа на 10 (последняя цифра), а второе значение - это само число с отрицательным знаком. Таким образом, сначала происходит сортировка по последней цифре числа (по возрастанию), а затем, при равенстве последних цифр, по убыванию значений.

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


Этот код выполнит ту же самую сортировку списка my_list, но результат сохранит в новый список sorted_list.

Также, для сортировки по другому критерию (например, по последней цифре числа) добавляют именованный аргумент key, который указывает на функцию, вычисляющую нужно значение, например:


Иногда данные в массиве дата представляют собой пары или тройки чисел, объединённые в кортежи (или в списки, в случае двумерных списков). В этом случае при стандартной сортировке сначала сравниваются первые элементы кортежей (строк, в случае с двумерными списками), если они равны – вторые и т.д. Чтобы задать свой порядок сортировки, нужно использовать аргумент key с обычной функцией или лямбда-функцией. 


В этом примере происходит сортировка по убыванию (знак «минус») второго элемента в строке, x[1], а если вторые элементы равны - по  возрастанию последней цифры первого элемента строке, x[0].
Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать