我正在学习python,并试图在循环中移动列表中的值。但不知道该怎么做。所以,如果我有这个:
list1 = ['a', 'b', 'c', 'd']
如何将值向右旋转并获取 ['d','a','b','c'] 然后再次移动 ['c','d','a','b']?
答案 0 :(得分:1)
只需使用列表切片表示法:
>>> 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']
答案 1 :(得分:0)
最简单的原因是使用deque。
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'])