使用生成器循环遍历列表中的数字

Using generator to cycle through numbers in a list

我正在寻找一种在每次调用函数时循环访问列表中的数字的方法。

我使用了生成器,它returns 列表中的成员一次一个,但我还没有找到在函数 returns 之后返回到列表开头的方法最后一个元素。

def returnSeq(self, numRows):
    for seq in [0, 1, 2, 3, 2, 1]:
        yield seq

如果有更好的实现方法,不胜感激

提前谢谢你,

你基本上是在重新实现 itertools.cycle:

import itertools

itertools.cycle([0, 1, 2, 3, 2, 1]) # <- there's your infinite generator

使用 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 模列表中的元素数。这意味着它是一个无限生成器,重复生成列表中的元素。