如何一个一个地移动列表中的值?

How to move values in a list one by one?

我正在学习 python,并且正在尝试循环移动列表中的值。但不知道该怎么做。所以,如果我有这个:

list1 = ['a', 'b', 'c', 'd']

如何将值右移一位并得到 ['d'、'a'、'b'、'c'] 然后再移动 [ 'c', 'd', 'a', 'b']?

最简单的原因是使用双端队列。

from collections import deque

d = deque(list1)
d.rotate(1)
print(d)
d.rotate(1)
print(d)

给出:

deque(['d', 'a', 'b', 'c'])
deque(['c', 'd', 'a', 'b'])

只需使用列表切片表示法:

>>> list1 = ['a', 'b', 'c', 'd']
>>> list1[:-1]
['a', 'b', 'c']
>>> list1[-1:]
['d']
>>> list1[-1:] + list1[:-1]
['d', 'a', 'b', 'c']
>>> def rotate(lst):
...   return lst[-1:] + lst[:-1]
... 
>>> list1
['a', 'b', 'c', 'd']
>>> list1 = rotate(list1)
>>> list1
['d', 'a', 'b', 'c']
>>> list1 = rotate(list1)
>>> list1
['c', 'd', 'a', 'b']