Python 周中的无限生成器

Infinite generator in Python for days of week

我看过类似的问题,我的更实际一点,我想一遍又一遍地遍历工作日的范围。

到目前为止我的迭代器不是循环的,请帮我解决这个问题。

def day_generator():
    for w in ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']:
        yield w;

g = day_generator()
print g.next() 

您可以使用 itertools 循环: https://docs.python.org/2/library/itertools.html#itertools.cycle

import itertools
def day_generator():
    days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
    for day in itertools.cycle(days):
        yield day

长话短说(如评论中所述)它真的足够了:

day_generator = itertools.cycle(days)

谢谢@FlavianHautbois

itertools.cycle 完全按照您的意愿行事:

import itertools

day_generator = itertools.cycle(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'])

您几乎已经搞定了,您只需要将您的 "yield" 语句放入无限循环中,以便它在需要时始终环绕:

def day_generator():
    while True:
        for w in ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']:
            yield w

g = day_generator()
for _ in range(10):
    print(next(g))

##Output:
##
##    Monday
##    Tuesday
##    Wednesday
##    Thursday
##    Friday
##    Saturday
##    Sunday
##    Monday
##    Tuesday
##    Wednesday

但是,正如其他人指出的那样,itertools.cycle 是最简洁的方法。