想知道是否有一种有效的方法可以将两个时间戳之间的差距缩小到单个小时。
假设我有观察结果:start=12:00
,end=18:00
。我想将这一个观察结果转换成6个观察结果,每个观察一次。 I.e. 12, 13, 14...,18.
我已经知道如何使用if / else,基于循环的答案,我正在寻找更有效的实现。
答案 0 :(得分:0)
如果有效率"你的意思是"用最少的代码",你可以尝试使用datetime.time
范围:
>>> from datetime import time
>>> [time(hour=h) for h in range(12, 19)]
[datetime.time(12, 0), datetime.time(13, 0), datetime.time(14, 0),
datetime.time(15, 0), datetime.time(16, 0), datetime.time(17, 0),
datetime.time(18, 0)]
由于时间需要小时作为其第一个位置参数,您甚至可以使用map:
使其略短>>> map(time, range(12, 19)]
如果您从datetime
对象开始,可以使用timedelta在它们之间建立范围:
>>> from datetime import datetime, timedelta
>>> before = datetime(2018,2,1,12,0)
>>> after = datetime(2018,2,1,18,0)
>>> seconds = int((after - before).total_seconds())
>>> [before + timedelta(seconds=s) for s in range(0, seconds, 3600)]
[datetime.datetime(2018, 2, 1, 12, 0), datetime.datetime(2018, 2, 1, 13, 0),
datetime.datetime(2018, 2, 1, 14, 0), datetime.datetime(2018, 2, 1, 15, 0),
datetime.datetime(2018, 2, 1, 16, 0), datetime.datetime(2018, 2, 1, 17, 0)]