Обратная сортировка списка в Python

Обратная сортировка списка в Python

Рассмотрим все возможные способы обратной сортировки списков в Python

Введение

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

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

Сортировка срезом списка

Срезы, а так же слайсинг, нарезка и индексирование — это несколько названий одного и того же. Я постараюсь называть это срезами.

Срезы — позволяет нам получать последовательность элементов/символов (в зависимости от типа данных) по описанному шаблону.

Мы можем использовать срезы для обратной сортировки списка.

spisok_slice = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
spisok_slice[::-1]

Вывод программы

[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

Принцип работы среза

Срез принимает на вход 3 значения, их необходимо вводить в квадратные скобки

  • start — начальный элемент среза
  • stop — последний элемент среза
  • step — шаг среза

Не забываем, что отсчет элементов начинается с нуля

Отрицательные значения элементов используется для обратного порядка элементов

Если мы передадим в step -1 то получается, что мы вернем список в обратном порядке, от последнего значения к первому. Таким образом мы можем получить сортировку срезом.

Чтобы упростить понимание срезов, можно посмотреть на таблицу ниже, в которой визуально продемонстрированы элементы списка и их положительный и отрицательный индекс.

Положительный индекс0123456789
Элемент списка12345678910
Отрицательный индекс-10-9-8-7-6-5-4-3-2-1
Таблица положительных и отрицательных индексов в списке

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

Сортировка методом списка reverse

В Python есть встроенный метод списка reverse(). Он позволяет изменить сортировку в исходном списке.

spisok_reverse = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
spisok_reverse.reverse()
print(spisok_reverse)	

Вывод программы

[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

Сортировка функцией reversed

В Python существует встроенная функция reversed, которая возвращает обратно-отсортированный список.

Описание функции на python.org -> https://docs.python.org/3/library/functions.html#reversed

spisok_reversed = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(reversed(spisok_reversed))	

Вывод программы

[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

Сортировка функцией sorted

Казалось бы зачем столько, но все таки есть еще один вариант, использовать встроенную функцию sorted с флагом reverse=True

Описание функции на python.org -> https://docs.python.org/3/library/functions.html#sorted

spisok_sorted = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(sorted(spisok_sorted, reverse=True))	

Вывод программы

[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

Заключение

В данной статье мы рассмотрели несколько вариантов обратной сортировки списка в Python, сортировка с помощью среза, сортировка с помощью метода списка reverse, сортировка с помощью функции reverse и сортировка с помощью функции sorted.

Надеюсь статья была для вас полезна.

Знаете другие способы обратной сортировки списков? Пишите в комментариях 🙂

Егор Егоров

Программирую на Python с 2017 года. Люблю создавать контент, который помогает людям понять сложные вещи. Не представляю жизнь без непрерывного цикла обучения, спорта и чувства юмора.

Ссылка на мой github есть в шапке. Залетай.

Оцените автора
Егоров Егор
Добавить комментарий

  1. Аноним

    chert

    Ответить