В этом руководстве мы расскажем, как перевернуть список в 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».