第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在Python中迭代一系列日期

在Python中迭代一系列日期

慕桂英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è)贊

為什么有兩個(gè)嵌套迭代?對(duì)我來說,它只使用一個(gè)迭代生成相同的數(shù)據(jù)列表:

for single_date in (start_date + timedelta(n) for n in range(day_count)):
    print ...

沒有列表被存儲(chǔ),只有一個(gè)生成器被迭代。此外,生成器中的“if”似乎沒有必要。

畢竟,線性序列只需要一個(gè)迭代器,而不是兩個(gè)迭代器。

與John Machin討論后的最新情況:

也許最優(yōu)雅的解決方案是使用生成器函數(shù)來完全隱藏/抽象日期范圍內(nèi)的迭代:

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")

注意:為了與內(nèi)置的range()函數(shù)此迭代停止。以前到達(dá)end_date..因此,對(duì)于包含性迭代,請(qǐng)?jiān)诘诙焓褂茫拖衲?/trans>range().


查看完整回答
反對(duì) 回復(fù) 2019-07-03
?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊

這一點(diǎn)可能更清楚:

d = start_date
delta = datetime.timedelta(days=1)while d <= end_date:
    print d.strftime("%Y-%m-%d")
    d += delta


查看完整回答
反對(duì) 回復(fù) 2019-07-03
?
眼眸繁星

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")

這個(gè)python庫有許多更高級(jí)的特性,有些非常有用,例如relative delta并且被實(shí)現(xiàn)為一個(gè)很容易包含到項(xiàng)目中的單一文件(模塊)。


查看完整回答
反對(duì) 回復(fù) 2019-07-03
  • 5 回答
  • 0 關(guān)注
  • 739 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)