我正在寻找一种方法,每次调用函数时循环遍历列表中的数字。
我使用了一个生成器,它一次返回列表一的成员,但是在函数返回最后一个元素后,我还没有找到回到列表开头的方法。
def returnSeq(self, numRows):
for seq in [0, 1, 2, 3, 2, 1]:
yield seq
如果有更好的方法来实现这一点,我将不胜感激。
提前谢谢你,
答案 0 :(得分:8)
您基本上重新实现了itertools.cycle
:
import itertools
itertools.cycle([0, 1, 2, 3, 2, 1]) # <- there's your infinite generator
答案 1 :(得分:1)
使用while
循环:
def returnSeq(self, numRows):
i = 0
items = [0, 1, 2, 3, 2, 1]
n_items = len(items)
while True:
yield items[i]
i = (i + 1) % n_items
这会不断增加i
模数列表中元素的数量。这意味着它是一个无限的发生器,重复产生列表中的元素。