आप एक जनरेटर फ़ंक्शन लिख सकते हैं जो आज से शुरू होने वाली तारीख वस्तुओं को लौटाता है:
import datetime
def date_generator():
from_date = datetime.datetime.today()
while True:
yield from_date
from_date = from_date - datetime.timedelta(days=1)
यह जनरेटर आज से शुरू होने वाली तारीखें और एक दिन में एक दिन पीछे की ओर जा रहा है। यहां बताया गया है कि पहली 3 तारीखें कैसे लें:
>>> import itertools
>>> dates = itertools.islice(date_generator(), 3)
>>> list(dates)
[datetime.datetime(2009, 6, 14, 19, 12, 21, 703890), datetime.datetime(2009, 6, 13, 19, 12, 21, 703890), datetime.datetime(2009, 6, 12, 19, 12, 21, 703890)]
एक लूप या सूची समझ पर इस दृष्टिकोण का लाभ यह है कि आप जितनी बार चाहें उतनी बार वापस जा सकते हैं।
संपादित करें
एक फ़ंक्शन के बजाय एक जनरेटर अभिव्यक्ति का उपयोग करके एक अधिक कॉम्पैक्ट संस्करण:
date_generator = (datetime.datetime.today() - datetime.timedelta(days=i) for i in itertools.count())
उपयोग:
>>> dates = itertools.islice(date_generator, 3)
>>> list(dates)
[datetime.datetime(2009, 6, 15, 1, 32, 37, 286765), datetime.datetime(2009, 6, 14, 1, 32, 37, 286836), datetime.datetime(2009, 6, 13, 1, 32, 37, 286859)]