Рассмотрим все возможные способы обратной сортировки списков в 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 то получается, что мы вернем список в обратном порядке, от последнего значения к первому. Таким образом мы можем получить сортировку срезом.
Чтобы упростить понимание срезов, можно посмотреть на таблицу ниже, в которой визуально продемонстрированы элементы списка и их положительный и отрицательный индекс.
Положительный индекс | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|
Элемент списка | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
Отрицательный индекс | -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.
Надеюсь статья была для вас полезна.
Знаете другие способы обратной сортировки списков? Пишите в комментариях 🙂
chert