В этом руководстве мы расскажем, как перевернуть список в Python. Мы разберем несколько разных способов реверсирования списков и диапазонов списков на примерах.
Итак, давайте начнем!
От редакции Pythonist. Также рекомендуем статью «Как перевернуть строку в Python».
Как создать диапазон элементов в Python
Наиболее простой и эффективный способ создать диапазон чисел в Python – использовать встроенную функцию range().
Чтобы создать список с диапазоном чисел, мы воспользуемся функцией list() и внутри нее укажем функцию range().
Функция range() принимает до трех параметров – это параметры start, stop и step, при этом общий синтаксис выглядит так:
range(start, stop, step)
Параметр start – это число, с которого начнется отсчет. По умолчанию данный параметр равен 0. Таким образом, мы формируем наш диапазон, начиная с нулевого элемента.
Параметр stop – это число, на котором счет будет остановлен. Важно отметить, что последнее число, которое войдет в диапазон – stop-1.
И последний параметр — step. Это число, которое определяет, как числа будут увеличиваться. То есть с каким шагом мы будем идти. По умолчанию, step=1, то есть мы перебираем числа одно за другим.
Из этих трех параметров обязательным является только stop, остальные указываются опционально.
Если вы передаете функции range() только параметр stop, по умолчанию отсчет начнется с 0, а закончится на одно число перед указанным вами.
Рассмотрим пример, чтобы лучше понять, как это работает:
# Создать список чисел,начинающийся с 0 # и заканчивающийся на 3 (не 4). my_range = list(range(4)) print(my_range) #output #[0, 1, 2, 3]
А вот так будет выглядеть пример, если передать сразу все 3 аргумента:
# Создать список чисел: # начинающийся с 0 # заканчивающийся на 9 # и чтобы счет инкрементировался на 1 my_range = list(range(0, 10, 1)) # Вывести в консоль print(my_range) # Результат: # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # Узнать тип при помощи встроенного метода type() print(type(my_range)) #output #<class 'list'>
Ещё раз заметим, что в данном случае параметры start и step можно было не передавать, так как они по умолчанию и так равны 0 и 1 соответственно.
Как перевернуть диапазон в Python
Чтобы перевернуть диапазон чисел в Python с помощью функции range(), можно использовать отрицательный шаг, например -1. То есть в качестве третьего параметра step вы передаете отрицательное число. Тогда в результате мы получим исходный диапазон в обратном порядке.
В приведенном ниже примере создается список из диапазона чисел от 9 до -1. Однако последнее число мы не включаем, поэтому последним элементом диапазона будет ноль. А шаг равен -1, то есть мы пойдем в обратную сторону, перебирая все числа одно за другим.
my_range = list(range(9, -1, -1)) print(my_range) # Результат: # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] print(type(my_range)) # <class 'list'>
Для того, чтобы переворачивать диапазоны в рамках функции range(), нужно передавать все три аргумента: start, stop и step. При этом step обязательно должен быть отрицательным.
Как перевернуть массив в Python
В программировании массив – это упорядоченный набор элементов, каждый из которых имеет один и тот же тип данных.
Каждый элемент в массиве имеет собственный порядковый номер (индекс).
Однако, в отличие от других языков программирования, в Python массивы не являются встроенной структурой данных. Для работы с массивами их нужно импортировать из сторонних библиотек (Numpy).
Вместо этого мы используем списки. А для поворота списков Python предлагает несколько способов. Давайте их рассмотрим!
Как перевернуть список в Python с помощью метода .reverse()
При использовании данного встроенного метода в Python список изменяется сразу же. Это означает, что изменяется исходный порядок данного списка.
Первоначальный порядок элементов исходного списка изменяется и тут же обновляется.
Например, предположим, что у нас есть следующий список:
# Исходный список
my_list = [10,20,30,40,50]
print("My initial list is: ",my_list)
# Результат:
# My initial list is: [10, 20, 30, 40, 50]
Чтобы изменить порядок элементов списка my_list на 50, 40, 30, 20, 10, выполним следующее:
# Исходный список
my_list = [10,20,30,40,50]
# Перевернуть порядок элементов
my_list.reverse()
print("This is what the list looks like now: ", my_list)
# Результат:
# This is what the list looks like now: [50, 40, 30, 20, 10]
Как видно из результата, начальный порядок списка теперь изменился, а элементы внутри него теперь стоят в обратном порядке.
Как перевернуть список в Python с помощью срезов
Срезы работают аналогично функции range(), которую мы разобрали ранее.
Срез также включает в себе три параметра: start, stop и step.
Синтаксис выглядит следующим образом: [start:end:step].
К примеру, давайте рассмотрим такой случай:
my_list = [10,20,30,40,50] my_list2 = my_list[1:3:1] print(my_list2) # Результат #[20, 30]
В приведенном выше примере мы хотели получить каждый элемент из исходного списка, начиная с индекса 1 до индекса 3 (но не включая его!).
Примечание. Индексирование в Python начинается с 0, поэтому первый элемент имеет индекс 0, второй элемент имеет индекс 1 и так далее.
Если вы хотите вывести все элементы, вы можете использовать один из двух следующих способов:
my_list = [10,20,30,40,50] my_list2 = my_list[:] # или... my_list2 = my_list[::] # Вывести в консоль print(my_list2) # Результат # 10, 20, 30, 40, 50]
Итак, мы поняли, как использовать срезы для вывода всех элементов, содержащихся в списке.
Теперь, давайте разберемся, как же перевернуть наш список, используя срезы. Всё просто – давайте добавим шаг. И точно так же, как и с функцией range(), сделаем его отрицательным.
В данном случае мы используем два двоеточия для вывода всех элементов от начала и до самого конца и отрицательный шаг для того, чтобы элементы были в обратном порядке.
Рассмотрим на примере, как это работает:
my_list = [10,20,30,40,50] my_list2 = my_list[::-1] print(my_list2) # Результат # [50, 40, 30, 20, 10]
В этом случае мы создаем новый список my_list2, при этом порядок исходного списка не изменяется.
Как перевернуть список в Python с помощью функции reversed()
Важно! Не путайте функцию reversed() с методом .reverse()!
Встроенная функция reversed() меняет порядок элементов списка на противоположный и позволяет нам обращаться к каждому элементу по отдельности.
К примеру, возьмем следующий список my_list:
my_list = [10,20,30,40,50]
for num in reversed(my_list):
print(num)
# Результат
#50
#40
#30
#20
#10
Функция reversed() принимает список в качестве аргумента и возвращает нам исходные элементы, только в обратном порядке.
Если вы хотите сохранить возвращаемое значение из функции reversed() для дальнейшего использования, то нужно преобразовать результат в список с помощью функции list(). Далее необходимо присвоить получившееся выражение переменной, в нашем случае my_new_list.
# Исходный список my_list = [10,20,30,40,50] # Используем функцию reversed() для изменения порядка элементов my_list # Сохраняем новый список, который создается, в переменную my_new_list my_new_list = list(reversed(my_list)) print(my_new_list) # Результат # [50, 40, 30, 20, 10]
Теперь в переменной my_new_list хранится перевёрнутый список my_list.
Важно заметить, что основное отличие метода .reverse() и функции reversed() заключается в том, что метод .reverse() меняет непосредственно исходный список. В то время как функция reversed() не изменяет сам исходный список, и полученное новое значение следует сохранять в новую переменную.
Заключение
Вот и все – теперь вы знаете основы работы с реверсированными списками в Python!
Мы подробно и на примерах разобрали, как перевернуть список в Python. Надеемся, что данная статья была вам полезной. Спасибо за чтение и успехов в написании кода!
Перевод статьи «Python Reverse List – How to Reverse a Range or Array».

