Как перевернуть список в Python

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

Лаборатория Django-разработки

За 3 месяца отработай навыки Django-разработки до профессионального уровня на серьезном проекте под руководством наставника.

×

Как перевернуть диапазон в 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».

python logo

Лаборатория Django-разработки

За 3 месяца отработай навыки Django-разработки до профессионального уровня на серьезном проекте под руководством наставника.

×