[英]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()
您可以使用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
你幾乎擁有它,你只需要將你的“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
是最簡潔的方法。
itertools.cycle完全符合您的要求:
import itertools
day_generator = itertools.cycle(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.