我有一个以分钟为单位的时间间隔列表,如下所示:
lst = [9.7, 16.1, 16.5, 2.3, 0.2, 7.0, 4.8, 24.9, 17.6, 13.8, 12.3,
16.2, 2.4, 8.7, 2.7, 35.5, 0.9, 25.6, 1.2, 17.4, 6.2, 7.8, 27.7, 0.3,
0.9, 37.0, 10.7, 1.4, 65.3, 44.0, 1.8, 8.3, 2.2, 5.6, 14.6, 2.7, 17.9,
0.8, 2.8, 25.4, 7.7, 8.1, 13.6, 9.7, 7.3, 0.5, 19.4, 51.4, 56.1, 16.3]
我正在尝试计算列表lst中间隔之间的最长和最短等待时间。我尝试了以下方法:
size = len(lst)
interval_diff = [lst[i + 1] - lst[i] for i in range(size) if i+1 < size]
print("shortest waiting time:",(min(interval_diff)))
print("longest waiting time:",(max(interval_diff)))
这给了我结果:
shortest waiting time: -42.2
longest waiting time: 63.9
问题是我能够正确计算最长的等待时间,但最短的等待时间给了我-42.2,时间不能为负。如果我尝试使用绝对值,那么如果我们将列表中的每个时间间隔与下一个时间间隔进行比较,那么它只会给出正42.2并且这不是最短的等待时间。我无法对列表进行排序,因为它需要按照时间间隔的顺序排列。有没有人知道如何才能获得列表中最短的等待时间?在这种情况下,我想它应该是2.3-0.2这是2.1?任何帮助将不胜感激。
答案 0 :(得分:2)
取代min
然后abs
,取每次之间的绝对差异:
interval_dff = [abs(x - y) for x, y in zip(lst[1:], lst)]
然后您可以使用min
/ max