【发布时间】:2017-09-26 21:39:59
【问题描述】:
我有一个以分钟为单位的时间间隔列表,如下所示:
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在2.3之后,你计算的是0.2 - 2.3而不是2.3 - 0.2。而16.5 - 16.1,即0.4小于2.1。 -
@MrGeek 你是对的,对不起,我以 2.3 - 0.2 为例。最短的等待时间是 16.5 - 16.1,即 0.4。
标签: python python-3.x list