更新带有numpy的较短版本import datetime
import numpy as np
def return_times(start,end):
if start < end:
return np.array([datetime.time(i,0) for i in range(start.hour,end.hour+1)])
else:
hours = list(range(24))
nplist = np.array([datetime.time(i,0) for i in hours if i not in list(range(end.hour+1,start.hour))])
return np.roll(nplist, -np.where(nplist==start)[0][0])
return_times(datetime.time(0,0),datetime.time(3,0)) # if-case 1
return_times(datetime.time(22,0),datetime.time(2,0)) # else-case
00:00->;03:00
^{pr2}$
100000 loops, best of 3: 12.6 µs per loop
22:00->02:00array([datetime.time(22, 0), datetime.time(23, 0), datetime.time(0, 0),
datetime.time(1, 0), datetime.time(2, 0)], dtype=object)10000 loops, best of 3: 79.9 µs per loop
update2使用mod感谢swifftsnamesake,这可以在一个列表理解中解决import datetime
def return_times(start,end):
s = start.hour
e = end.hour
hours = [i%24 for i in range(s, e+1 if e >= s else 24+e+1)]
return [datetime.time(i,0) for i in hours]
return_times(datetime.time(0,0),datetime.time(3,0))100000 loops, best of 3: 3.75 µs per loop