collections.deque() подойдёт хорошо.
>>> import collections
>>>
>>> d = collections.deque(range(1, 11))
>>>
>>> while d:
... 'step'
... d
... d.rotate(-2)
... d
... d.popleft()
... d
...
'step'
deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
deque([3, 4, 5, 6, 7, 8, 9, 10, 1, 2])
3
deque([4, 5, 6, 7, 8, 9, 10, 1, 2])
'step'
deque([4, 5, 6, 7, 8, 9, 10, 1, 2])
deque([6, 7, 8, 9, 10, 1, 2, 4, 5])
6
deque([7, 8, 9, 10, 1, 2, 4, 5])
'step'
deque([7, 8, 9, 10, 1, 2, 4, 5])
deque([9, 10, 1, 2, 4, 5, 7, 8])
9
deque([10, 1, 2, 4, 5, 7, 8])
'step'
deque([10, 1, 2, 4, 5, 7, 8])
deque([2, 4, 5, 7, 8, 10, 1])
2
deque([4, 5, 7, 8, 10, 1])
'step'
deque([4, 5, 7, 8, 10, 1])
deque([7, 8, 10, 1, 4, 5])
7
deque([8, 10, 1, 4, 5])
'step'
deque([8, 10, 1, 4, 5])
deque([1, 4, 5, 8, 10])
1
deque([4, 5, 8, 10])
'step'
deque([4, 5, 8, 10])
deque([8, 10, 4, 5])
8
deque([10, 4, 5])
'step'
deque([10, 4, 5])
deque([5, 10, 4])
5
deque([10, 4])
'step'
deque([10, 4])
deque([10, 4])
10
deque([4])
'step'
deque([4])
deque([4])
4
deque([])
>>>
Естественно, ты можешь и на обычном списке сделать такой дек. Можно, конечно, и на одном индексе сделать.
Так что для тренировки можешь сделать все три варианта и посмотреть, какой из них читаемее, быстрее делается, быстрее работает и менее затратен по памяти.