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

时间:2015-06-14 18:30:50

标签: python generator

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

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

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

如果有更好的方法来实现这一点,我将不胜感激。

提前谢谢你,

2 个答案:

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