Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的无限生成器,用于一周中的几天_Python_Generator - Fatal编程技术网

Python中的无限生成器,用于一周中的几天

Python中的无限生成器,用于一周中的几天,python,generator,Python,Generator,我也看到过类似的问题,我的问题更实际一点,我想一次又一次地重复一周的时间范围 到目前为止,我的迭代器不是循环的,请帮助我解决这个问题 def day_generator(): for w in ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']: yield w; g = day_generator() print g.next() 您可以使用itertool的

我也看到过类似的问题,我的问题更实际一点,我想一次又一次地重复一周的时间范围

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

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

g = day_generator()
print g.next() 

您可以使用itertool的循环:

长话短说(正如评论中所提到的),这真的足以:

day_generator = itertools.cycle(days)
谢谢@FlavianHautbois

正是您想要的:

import itertools

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

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

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

您的代码不是有效的Python,您的函数没有参数。。。另外,如果您不使用函数,您可以只编写
day\u generator=itertools.cycle(days)
是的,我尝试根据答案中提到的内容调整代码。将对其进行更新以减少混淆。我认为这里的要点是
cycle
方法
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