2012-12-18 113 views
3

日期我有一個BEGIN_DATE datetime.date(2012, 9, 1)和END_DATE datetime.date(2012, 9, 30)迭代器在Python

我想獲得一個迭代器或包含日期2012年9月1日至2012年9月30日的清單。是其他任何方式再一個循環做到讓這個迭代或列表

+2

不,您需要一個循環 - 但是您可以將循環嵌入到函數/生成器中,以免再次看到它。 – mgilson

回答

4

沒有一個隱含的循環,你可以這樣做:

from datetime import date 
from dateutil.rrule import rrule, DAILY 

iterdates=iter(rrule(DAILY, dtstart=date(2012, 9, 1), until=date(2012, 9, 30))) 
10

使用發電機:

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 
+0

法律要求每個Martijn Pieters'python'必須遵守的法律法規--P – NlightNFotis

+0

哦蟒蛇爲什麼你這麼容易。 –