我见过类似的问题,我的实用性更强一些,我想一遍又一遍地重复一周的工作日。
到目前为止,我的迭代器不是循环的,请帮我解决这个问题。
def day_generator():
for w in ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']:
yield w;
g = day_generator()
print g.next()
答案 0 :(得分:6)
你可以使用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
长话短说(正如评论中所提到的)它真的足以让:
day_generator = itertools.cycle(days)
谢谢@FlavianHautbois
答案 1 :(得分:0)
你几乎拥有它,你只需要将你的“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
是最简洁的方法。
答案 2 :(得分:-1)
itertools.cycle完全符合您的要求:
import itertools
day_generator = itertools.cycle(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'])