在python中移动列表的高效方法

问题:

在python中移动列表的最有效的方法是什么?
现在我有这样的东西:

>>> def shift(l, n):
...     return l[n:] + l[:n]
... 
>>> l = [1,2,3,4]
>>> shift(l,1)
[2, 3, 4, 1]
>>> shift(l,2)
[3, 4, 1, 2]
>>> shift(l,0)
[1, 2, 3, 4]
>>> shift(l,-1)
[4, 1, 2, 3]

有没有更好的办法?

回答:

A collections.deque针对两端的拉动和推压进行了优化。他们甚至拥有专门的rotate()方法。

from collections import deque
items = deque([1, 2])
items.append(3) # deque == [1, 2, 3]
items.rotate(1) # The deque is now: [3, 1, 2]
items.rotate(-1) # Returns deque to original state: [1, 2, 3]
item = items.popleft() # deque == [2, 3]

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Efficient way to shift a list in python

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

21 + = 26