Чтобы изменить список на месте, просто вставьте его и вставьте его на фронте:
a.insert(0, a.pop())
Demo:
>>> a = [1, 2, 3, 4, 5, 6, 7]
>>> a.insert(0, a.pop())
>>> a
[7, 1, 2, 3, 4, 5, 6]
Однако, обратите внимание, что все остальные элементы должны быть сдвинуты на место для этого, так внутренне O принимаются (N) шагов (для N элементов в списке).
Вы также можете создать новый объект списка с помощью нарезки и конкатенации:
a = a[-1:] + a[:-1]
, но это более неэффективно еще как теперь вы должны создать 3 новые объекты списка, удваивая количество предпринятых шагов ,
Если вам необходимо регулярно вращать список, вы можете использовать вместо collections.deque()
object:
from collections import deque
a = deque([1, 2, 3, 4, 5, 6, 7])
a.rotate(1)
deque
вращение является O (K) процессом, где К числу шагов вращались.
disavantage из deque
что произвольная индексация может стоить до O (N) шаги, чтобы добраться до элемента N в списке, в то время как индексирование к любому элементу в регулярном списке O (1) постоянное время ,
thx это хорошо работает –
yep, 'deque', безусловно, является правильной структурой данных здесь. – timgeb