将时间列表与时间范围列表相交的最佳方法

时间:2012-06-26 16:27:20

标签: python

基本上我拥有的是:

secondData = [["8:33:00", 5], ["8:33:01", 3], ...] # and so forth
minuteData = [["8:33:00", 6], ["8:34:00", 5], ...] # and so forth

现在假装时间是一个实际的日期时间对象

我想要做的是找到最有效的方法来迭代分钟数据并获取该分钟内所有包含的第二个数据。例如如果我有“8:34:00”我想要“8:34.00”......“8:34:59”。是否有一种简单的方法可以为此或其他东西制作列表过滤器?

我应该注意,列表按时间顺序排列,但可能缺少第二个数据。例如,我可能只有9分58秒的数据点。

1 个答案:

答案 0 :(得分:4)

使用bisect

from bisect import bisect_left
secondData[bisect_left(secondData, "8:33:00"):bisect_left(secondData, "8:34:00")]

这将为您提供secondData切片的半开[[8:33:00“..”8:34:00“)。