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