【发布时间】:2019-12-17 21:40:05
【问题描述】:
我有一个需要分配给时间窗口(7、9、12、15、18)的时间列表,以确保每个时间窗口都被列表中的一个元素覆盖。
from datetime import date, time, datetime
def nearest(items, target):
return min(items, key=lambda x: abs(x - target))
time_list = [datetime.datetime(2019, 12, 17, 7, 30),
datetime.datetime(2019, 12, 17, 9, 0),
datetime.datetime(2019, 12, 17, 16, 0),
datetime.datetime(2019, 12, 17, 18, 30),
datetime.datetime(2019, 12, 17, 21, 30),
datetime.datetime(2019, 12, 17, 12, 30),
datetime.datetime(2019, 12, 17, 19, 0),
datetime.datetime(2019, 12, 17, 0, 0),
datetime.datetime(2019, 12, 17, 14, 30)]
target_times = [datetime.combine(date.today(),time(i,0)) for i in range(6,19,3)]
coverage = [abs(nearest(time_list, t)-t)<time(1,30) for t in target_times]
期望的输出:
[True, True, True, True, True]
这当前返回一个“
【问题讨论】:
-
您想要的输出在列表中有 5 个条目,与 target_times 匹配...所以您是否要查看
time_list的任何元素是否在 any 的 bin 中target_times? -
我想知道每个
target_times是否被time_list元素之一覆盖
标签: python date datetime time comparison-operators