Сортировка в Python


В этой статье, хочу рассмотреть вопрос сортировок в Python: какие функции для этого предназначены, нюансы применения и сортировка различных типов данных.

Сортировка в Python списков, словарей

Функции сортировки в Python

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

Это две очень похожие функции, выполняющие одно и тоже действие, но различие все таки есть:

  • sorted(list) – список или словарь передается функции в качестве аргумента и сам список не меняется, то есть функция создает новое значение.
  • list.sort() – функция .sort() применяется к имеющемуся списку и изменяет его.

Рассмотрим на примере:

Этот пример показывается, что после применения функции sorted в строке 2, сам список не изменился. Теперь рассмотрим тоже самое, но с функцией .sort() :

Получается, что после применения функции .sort список остается отсортированным.

Сортировка по убыванию

Для того, чтобы менять направление сортировки используется ключевое слово reverse в параметрах функций. По умолчанию параметр принимает значение False, при изменении его значения на True, сортировка будет производиться по убыванию.

Сортировка строк в Python

Сортировка списка строк по умолчанию производится лексикографически, то есть по алфавиту + от меньшего значения к большему. Символьный код у заглавных букв меньше, чем у строчных, поэтому их классическая сортировка поставит раньше, например:

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

Сортировка словарей и кортежей

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

Код будет выглядеть так:

Таким образом, с помощью параметра key=itemgetter(3) мы указали, что сортировать кортеж необходимо по параметру с индексом 3.

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

Для того, чтобы отсортировать словарь по ключу необходимо воспользоваться дополнительной функцией .keys , с помощью которой мы получим ключи словаря. А потом объединим ключи в список и отсортируем его:

Сортировка без функций .sort и sorted()

Для сортировки без использования стандартных функций, применяются специальные методы и алгоритмы, которые требуют отдельного подробного пояснения, о них я написал в отдельных материалах:

Сортировка пузырьком;

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *