慕桂英3389331
2019-07-03 13:50:50
在Python中迭代一系列日期我有下面的代碼來完成這個(gè)任務(wù),但是如何才能做得更好呢?現(xiàn)在,我認(rèn)為它比嵌套循環(huán)更好,但是當(dāng)您在列表理解中有一個(gè)生成器時(shí),它就開始得到Perl-一行代碼。day_count = (end_date - start_date).days + 1for single_date in [d for d in (start_date + timedelta(n) for n in range(day_count))
if d <= end_date]:
print strftime("%Y-%m-%d", single_date.timetuple())注記我不是用這個(gè)來打印的。那只是為了演示。這個(gè)start_date和end_date變量是datetime.date對(duì)象,因?yàn)槲也恍枰獣r(shí)間戳。(它們將用于生成報(bào)告)。樣本輸出開始日期2009-05-30和結(jié)束日期2009-06-09:2009-05-302009-05-312009-06-012009-06-022009-06-032009-06-042009-06-052009-06-062009-06-072009-06-082009-06-09
5 回答

慕少森
TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
for single_date in (start_date + timedelta(n) for n in range(day_count)): print ...
與John Machin討論后的最新情況:
from datetime import timedelta, datedef daterange(start_date, end_date): for n in range(int ((end_date - start_date).days)): yield start_date + timedelta(n)start_date = date(2013, 1, 1)end_date = date(2015, 6, 2) for single_date in daterange(start_date, end_date): print single_date.strftime("%Y-%m-%d")
range()
end_date
range()
.

慕標(biāo)5832272
TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
d = start_date delta = datetime.timedelta(days=1)while d <= end_date: print d.strftime("%Y-%m-%d") d += delta

眼眸繁星
TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
dateutil
from datetime import datefrom dateutil.rrule import rrule, DAILY a = date(2009, 5, 30)b = date(2009, 6, 9)for dt in rrule(DAILY, dtstart=a, until=b): print dt.strftime("%Y-%m-%d")
relative delta
添加回答
舉報(bào)
0/150
提交
取消