我需要选择不超过interval
几天前的最早日期的索引date1
(使用 index i1
)。我有一个排序列表dates
,这是我正在尝试做的片段:
for i1 in mylist:
date1 = dates[i1]
i0 = sum(1 for d in dates if date1 - d > timedelta(days = interval))
# do some other stuff with this
我发现的那条线i0
似乎是这个循环的瓶颈,因为如果我把它改成i0 = max(0, i1 - 30)
(它只是忽略丢失的日期),它的工作速度大约快 100 倍。
有没有办法加快速度?我觉得应该有一种方法可以使用列表已排序的事实并避免进行所有比较。
PS:我的第一次尝试是:
i0 = len([d for d in dates if date1 - d > timedelta(days = interval)])
这甚至更慢。