Перемещение значений, но сохранение порядка в списке 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
  • python - получить список первого индекса кортежей?
  • спрятать список в python
  • разбивать список на лямбда-функцию в python
  • Как обрабатывать распаковку расширений переменной длины в Python2?
  • создание словарей для отображения порядка ранжирования
  • Почему список необходим для random.choice
  • Python для понимания словарей в словарях?
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.