日期我有一個BEGIN_DATE datetime.date(2012, 9, 1)
和END_DATE datetime.date(2012, 9, 30)
迭代器在Python
我想獲得一個迭代器或包含日期2012年9月1日至2012年9月30日的清單。是其他任何方式再一個循環做到讓這個迭代或列表
日期我有一個BEGIN_DATE datetime.date(2012, 9, 1)
和END_DATE datetime.date(2012, 9, 30)
迭代器在Python
我想獲得一個迭代器或包含日期2012年9月1日至2012年9月30日的清單。是其他任何方式再一個循環做到讓這個迭代或列表
沒有一個隱含的循環,你可以這樣做:
from datetime import date
from dateutil.rrule import rrule, DAILY
iterdates=iter(rrule(DAILY, dtstart=date(2012, 9, 1), until=date(2012, 9, 30)))
使用發電機:
from datetime import date, timedelta
def dategenerator(start, end):
current = start
while current <= end:
yield current
current += timedelta(days=1)
演示:
>>> for dt in dategenerator(date(2012, 9, 1), date(2012, 9, 30)):
... print dt
...
2012-09-01
2012-09-02
2012-09-03
2012-09-04
2012-09-05
2012-09-06
2012-09-07
2012-09-08
2012-09-09
2012-09-10
2012-09-11
2012-09-12
2012-09-13
2012-09-14
2012-09-15
2012-09-16
2012-09-17
2012-09-18
2012-09-19
2012-09-20
2012-09-21
2012-09-22
2012-09-23
2012-09-24
2012-09-25
2012-09-26
2012-09-27
2012-09-28
2012-09-29
2012-09-30
法律要求每個Martijn Pieters'python'必須遵守的法律法規--P – NlightNFotis
哦蟒蛇爲什麼你這麼容易。 –
不,您需要一個循環 - 但是您可以將循環嵌入到函數/生成器中,以免再次看到它。 – mgilson