如何一个一个地移动列表中的值?
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']
我正在学习 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']