Пример функции, которая смещает элементы списка на указанное число шагов. Если шаг имеет отрицательное значение, смещение происходит влево. Выбывшие спереди элементы появляются в конце списка. Если шаг положителен, смещение происходит вправо. Выбывшие сзади элементы появляются в начале списка.
def shift(lst, steps):
"""Циклический сдвиг списка.
lst - список,
steps - количество шагов.
Если значение 'steps' отрицателено,
то сдвиг влево,
если положителено, то вправо."""
# сдвиг влево
if steps < 0:
steps = abs(steps)
# Количество итераций цикла равно
# количеству шагов.
for i in range(steps):
# Извлекается первый элемент
item = lst.pop(0)
# и добавляется в конец списка.
lst.append(item)
# сдвиг вправо
else:
for i in range(steps):
# Извлекается последний элемент
item = lst.pop()
# и вставляется в начало списка.
lst.insert(0, item)
nums = [4, 5, 6, 7, 8, 9, 0]
print(nums)
# сдвиг влево на 2 позиции
shift(nums, -2)
print(nums)
# Сдвиг вправо на 3 позиции.
# Сдвигаться будет список,
# уже измененный от предыдущего
# вызова shift().
shift(nums, 3)
print(nums)
