Python中的无限生成器

2024-04-29 12:38:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我也见过类似的问题,我的问题更实际一点,我想在一周的时间范围内反复迭代。在

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

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

g = day_generator()
print g.next() 

Tags: infordef时间generatorprintyieldmonday
3条回答

你几乎就有了它,你只需要把你的“收益”陈述放在一个无休止的循环中,这样它就会在需要的时候一直围绕着它:

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是最简洁的方法。在

您可以使用itertool的循环: 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

长话短说(正如评论中所提到的),这确实足够:

^{pr2}$

谢谢@FlavianHautbois

itertools.cycle完全符合您的要求:

import itertools

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

相关问题 更多 >