Перемещение значений, но сохранение порядка в списке 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
  • стоп-обновление при использовании del python
  • Список понятий и условий?
  • difflib.get_close_matches () - получение желаемого результата
  • Самый быстрый способ проверить, существует ли значение в списке
  • Python объединяет массивы различных размеров, хранящиеся в списке
  • понимание списка python для создания двух значений на одной итерации
  • Выполнение математики в списке в python
  • Как разгадать массив?
  • Python - лучший язык программирования в мире.