所以我有这个清单,
列表: [0,0,1,0,1];
我需要制作一个带有for
的算法来显示所有列表(list[i]
)。
当我处于第一阵列位置时,我可以list[i-2] and list[i-1]
,我可以看到最后一个位置的元素和最后一个位置之前的位置。
例如: list[0] = 0; list[i-1] = list[4] = 1; list[i-2] = list[3] = 0;
所以我可以到最后一个位置并从那里开始。
但是当我这样做时,list[i+1]
在最后一个位置,我从终端获得 IndexError:list index out of range 。
我的问题是:如果我处于最后的位置,我想再次从第一个位置开始并继续执行for循环,从无限的时间看所有位置的所有数组元素,如何我能做到?
如果我的数组的大小是5,并且我在循环中处于第二位置(list[1]
)并且想要list[i + 11]
,我怎么能把它代表这个,list[2]
?< / p>
我正在尝试在python上创建它。
答案 0 :(得分:1)
我相信你对旋转阵列的询问,如果这不是你的意思,只需评论。
def rotateLeft(li):
return li[1:] + [li[0]]
def rotateRight(li):
return [li[len(li)-1]] + li[:len(li)-1]
li = [1,2,3,4,5]
print (rotateLeft(li))
print (rotateRight(li))
答案 1 :(得分:0)
您可以按如下方式实现这样的“无限迭代器”:
def infinite_iterator(lst):
i = 0
def next():
global i
while True:
result = lst[i % len(lst)]
i += 1
yield result
return next()
并将其用于:
lst = [1,2,3,4,5]
iter = infinite_iterator(lst)
for i in range(17): # 17 is just an example, you can put any number or `while True:`
print(next(iter))
答案 2 :(得分:-1)
您可以使用模运算符来实现此操作,该运算符返回其两个操作数的除法的余数。在这种情况下,您将执行以下操作:list[i%num_of_elements]
,其中num_of_elements是一个包含列表中元素数量的变量。