如何逐个移动列表中的值?

时间:2015-01-11 01:07:46

标签: python list

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

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

如何将值向右旋转并获取 ['d','a','b','c'] 然后再次移动 ['c','d','a','b']?

2 个答案:

答案 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'])