我在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
答案 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)
只需使用pop
和insert
:
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)