Перемещение значений, но сохранение порядка в списке Python

У меня есть список

a=[1,2,3,4,5] 

и хотите «переместить» свои значения, чтобы они менялись

 a=[2,3,4,5,1] 

и следующий шаг

 a=[3,4,5,1,2] 

Есть ли встроенная функция в Python для этого?

Или есть более короткий или лучший способ, чем

 b=[a[-1]]; b.extend(a[:-1]); a=b 

One Solution collect form web for “Перемещение значений, но сохранение порядка в списке Python”

 >>> a = [1,2,3,4,5] >>> a.append(a.pop(0)) >>> a [2, 3, 4, 5, 1] 

Это дорого, однако, поскольку он должен сдвигать содержимое всего списка, что является O (n). Лучшим выбором может быть использование collections.deque если он доступен в вашей версии Python, что позволяет добавлять и удалять объекты с обоих концов примерно за время O (1):

 >>> a = collections.deque([1,2,3,4,5]) >>> a deque([1, 2, 3, 4, 5]) >>> a.rotate(-1) >>> a deque([2, 3, 4, 5, 1]) 

Также обратите внимание, что оба эти решения включают изменение исходного объекта последовательности, тогда как ваш создает новый список и назначает его. Поэтому, если бы мы это сделали:

 >>> c = a >>> # rotate a 

С помощью вашего метода c будет продолжать ссылаться на исходный, невращаемый список и с помощью моих методов, он будет ссылаться на обновленный, повернутый список / deque.

  • Доступ к элементу в списке списков
  • Преобразование одного списка в отдельные
  • Есть ли более элегантный / питонический способ выразить эту конструкцию?
  • спрятать список в python
  • Доступ к типу списка Python
  • Макс в списке с двумя условиями
  • Случаи, когда использование кортежа является обязательным
  • Есть ли простой способ удалить элемент списка по значению?
  • Python - лучший язык программирования в мире.