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

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

填寫開始/結(jié)束日期列表及其之間的日期

填寫開始/結(jié)束日期列表及其之間的日期

慕尼黑的夜晚無繁華 2023-07-27 10:31:03
給定一個(gè)具有以下結(jié)構(gòu)的列表:[start_date_cycle1, end_date_cycle1, start_date_cycle2, end_date_cycle2, ..., end_date_cycleK]其中所有元素都是時(shí)間戳,我想得到以下內(nèi)容[[start_date_cycle1, start_date_cycle1 +1d, start_date_cycle1 +2d, ..., end_date_cycle1], [start_date_cycle2, start_date_cycle2 +1d ...]]因此,如果輸入為['10-23-2019', '10-26-2019' , '11-02-2019', '11-06-2019'],則輸出將為:[['10-23-2019', '10-24-2019','10-25-2019', '10-26-2019'] ,  ['11-02-2019', '11-03-2019','11-04-2019','11-05-2019','11-06-2019']]PS:列表的長(zhǎng)度始終是偶數(shù)(因此沒有結(jié)束就沒有循環(huán)的開始)。
查看完整描述

4 回答

?
翻閱古今

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

您可以使用timedeltafrom datetimemodule 從開始日期到結(jié)束日期進(jìn)行迭代,如下所示


from datetime import datetime as dt, timedelta as td

strp,strf,fmt=dt.strptime,dt.strftime,"%m-%d-%Y"


a=['10-23-2019', '10-26-2019' , '11-02-2019', '11-06-2019']


print([[strf(k,fmt) for k in (strp(i,fmt)+td(days=n) for n in range((strp(j,fmt)-strp(i,fmt)).days+1))] for i,j in zip(a[::2],a[1::2])])

輸出


[['10-23-2019', '10-24-2019', '10-25-2019', '10-26-2019'], ['11-02-2019', '11-03-2019', '11-04-2019', '11-05-2019', '11-06-2019']]



查看完整回答
反對(duì) 回復(fù) 2023-07-27
?
MYYA

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

您可以將字符串解析為datetime對(duì)象,使用它們進(jìn)行必要的計(jì)算(通過添加timedelta對(duì)象),然后最后轉(zhuǎn)換回字符串。


為了按照問題中的指定將輸出生成為嵌套列表,臨時(shí)變量dates_out用于生成內(nèi)部列表,這些列表將附加到out循環(huán)內(nèi)的主列表 ( ) 中。


如果您想使用日-月-年排序,請(qǐng)?jiān)诔霈F(xiàn)該順序的地方將 更改'%m-%d-%Y'為。'%d-%m-%Y'


import datetime


dates = ['10-23-2019', '10-26-2019' , '11-02-2019', '11-06-2019']

format = '%m-%d-%Y'


dts = [datetime.datetime.strptime(date, format) for date in dates]


out = []

i = iter(dts)

for start, end in zip(i, i):

    dt = start

    dates_out = []

    while dt <= end:

        dates_out.append(datetime.datetime.strftime(dt, format))

        dt += datetime.timedelta(days=1)

    out.append(dates_out)


print(out)

這給出:


[['10-23-2019', '10-24-2019', '10-25-2019', '10-26-2019'],

 ['11-02-2019', '11-03-2019', '11-04-2019', '11-05-2019', '11-06-2019']]

(為了可讀性插入換行符)


查看完整回答
反對(duì) 回復(fù) 2023-07-27
?
函數(shù)式編程

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

您可以使用dateutil模塊輕松完成此操作。您可以通過執(zhí)行以下操作來安裝它pip install python-dateutil。


map(parse, lst)將日期從字符串轉(zhuǎn)換為日期時(shí)間對(duì)象;zip(*[map(parse, lst)]*2)將創(chuàng)建成對(duì)的日期時(shí)間對(duì)象,以便您可以成對(duì)地導(dǎo)航它們(start,end)。最后rrule(freq=DAILY, dtstart=start, until=end)創(chuàng)建從開始到結(jié)束的一系列日期時(shí)間對(duì)象


>>> from dateutil.rrule import rrule, DAILY

>>> from dateutil.parser import parse

>>> 

>>> lst = ['10-23-2019', '10-26-2019' , '11-02-2019', '11-06-2019']

>>> res = [[dt.strftime('%m-%d-%Y') for dt in rrule(freq=DAILY, dtstart=start, until=end)] for start,end in  zip(*[map(parse, lst)]*2)]

>>> 

>>> print(res)

[['10-23-2019', '10-24-2019', '10-25-2019', '10-26-2019'],

 ['11-02-2019', '11-03-2019', '11-04-2019', '11-05-2019', '11-06-2019']]


查看完整回答
反對(duì) 回復(fù) 2023-07-27
?
躍然一笑

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

datetime這是使用模塊的一種方法


前任:


import datetime


data = ['10-23-2019', '10-26-2019' , '11-02-2019', '11-06-2019']

result = []

for s, e in zip(data[::2], data[1::2]):          # (10-23-2019, 10-26-2019)....

    s = datetime.datetime.strptime(s, "%m-%d-%Y")

    e = datetime.datetime.strptime(e, "%m-%d-%Y")

    temp = []

    while s <= e:

        temp.append(s.strftime("%m-%d-%Y"))

        s += datetime.timedelta(days=1)

    if temp:

        result.append(temp)

print(result)

輸出:


[['10-23-2019', '10-24-2019', '10-25-2019', '10-26-2019'],

 ['11-02-2019', '11-03-2019', '11-04-2019', '11-05-2019', '11-06-2019']]


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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