簡體   English   中英

Python中的無限生成器,每周幾天

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM