-
翻阅古今
您可以使用timedeltafrom datetimemodule 从开始日期到结束日期进行迭代,如下所示from datetime import datetime as dt, timedelta as tdstrp,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']]
-
MYYA
您可以将字符串解析为datetime对象,使用它们进行必要的计算(通过添加timedelta对象),然后最后转换回字符串。为了按照问题中的指定将输出生成为嵌套列表,临时变量dates_out用于生成内部列表,这些列表将附加到out循环内的主列表 ( ) 中。如果您想使用日-月-年排序,请在出现该顺序的地方将 更改'%m-%d-%Y'为。'%d-%m-%Y'import datetimedates = ['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']](为了可读性插入换行符)
-
函数式编程
您可以使用dateutil模块轻松完成此操作。您可以通过执行以下操作来安装它pip install python-dateutil。map(parse, lst)将日期从字符串转换为日期时间对象;zip(*[map(parse, lst)]*2)将创建成对的日期时间对象,以便您可以成对地导航它们(start,end)。最后rrule(freq=DAILY, dtstart=start, until=end)创建从开始到结束的一系列日期时间对象>>> 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']]
-
跃然一笑
datetime这是使用模块的一种方法前任:import datetimedata = ['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']]