Sie können eine Generatorfunktion schreiben, die ab heute Datumsobjekte zurückgibt:
import datetime
def date_generator():
from_date = datetime.datetime.today()
while True:
yield from_date
from_date = from_date - datetime.timedelta(days=1)
Dieser Generator gibt Daten ab heute zurück und geht einen Tag nach dem anderen zurück. So nehmen Sie die ersten 3 Termine:
>>> 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)]
Der Vorteil dieses Ansatzes gegenüber einer Schleife oder einem Listenverständnis besteht darin, dass Sie so oft zurückgehen können, wie Sie möchten.
Bearbeiten
Eine kompaktere Version, die einen Generatorausdruck anstelle einer Funktion verwendet:
date_generator = (datetime.datetime.today() - datetime.timedelta(days=i) for i in itertools.count())
Verwendungszweck:
>>> 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)]