在python中向右转换for循环

时间:2013-08-09 14:48:15

标签: python

我在python中有一个列表[a,b,c,d],我把它转移到左边,使用for循环索引,结果是[b,c,d,a]

现在我已计划将其移至右侧,我假设结果为[d,a,b,c],但我无法为其编写代码。

有人可以建议我使用代码和概念吗?

这是我向左移动的代码。

def shift_left(L):
    first_item = L[0]
    for i in range (1, len(L)):
        L[i-1] = L[i] 
    L[-1] = first_item

3 个答案:

答案 0 :(得分:7)

最好使用collections.deque

>>> from collections import deque
>>> l = ['a','b','c','d']
>>>
>>> v = deque(l)
>>> v.rotate(1)
>>> v
deque(['d', 'a', 'b', 'c'])
>>>
>>> v = deque(l)
>>> v.rotate(-1)
>>> v
deque(['b', 'c', 'd', 'a'])

您可以通过list(v)转换回列表。

答案 1 :(得分:5)

只需使用popinsert

def shift_right(l):
    l.insert(0, l.pop())

pop删除并返回列表中的最后一项,insert在索引处插入一个项目。

答案 2 :(得分:1)

如果您的元素属于单一类型,请考虑制作NumPy数组并“滚动”它:

import numpy as np
arr = np.array(my_list)
shifted_left = np.roll(arr, -1)
shifted_right = np.roll(arr, 1)