Циклический сдвиг в python

Нашел решение задачи "циклический сдвиг" и не могу разобраться, что значит одна из строк. Конкретно не понятно какую функцию выполняет записанная в квадратные скобки переменная(4 строка кода). Понимаю что эта строка сдвигает список, но почему именно такая запись и как это можно применять на практике в других кодах-нет. Подскажите пожалуйста

length = int(input())
lst = list(map(int, input().split()))
shift = 1

lst = lst[-shift:] + lst[:-shift]

a=' '.join(str(e) for e in lst)
print(a)

Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Python хорош тем что вы можете легко сами пощупать его конструкции в консоли или в ноутбуке. Как-то так:

Собираем список для тестов:

$ python
@>>> lst = list(range(10))
@>>> lst
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

shift равен -1, подставляем как есть и смотрим на первое слагаемое. Похоже оно вырезает один элемент с конца списка:

@>>> lst[-1:]
[9]

Второе слагаемое вырезает все элементы списка кроме последнего:

@>>> lst[:-1]
[0, 1, 2, 3, 4, 5, 6, 7, 8]

Если их сложить, то получится что последний элемент переставлен в начало списка. То есть, у нас циклический сдвиг на один элемент вправо. Что и требовалось получить:

@>>> lst[-1:] + lst[:-1]
[9, 0, 1, 2, 3, 4, 5, 6, 7, 8]
→ Ссылка