在稀疏的值列表中获取最长的子序列

时间:2015-09-28 22:33:11

标签: python timestamp sequence unix-timestamp

我有一个非常长的unix时间列表(四舍五入到10s),我需要找到该列表中相隔10s的最长时间序列序列。

[1441831770.0, 1441831780.0, 1441831790.0, ... 1442466860.0, 1442466870.0, 1442466880.0]

如果我有一个包含100个时间戳的列表,其中60个是600秒长的序列,然后是4分钟的休息时间,然后是400秒长的另一个40,我将返回60秒长的时间戳子列表

有一种有效的方法吗? itertoolsnumpy?还是必须硬编码?

感谢。

1 个答案:

答案 0 :(得分:0)

itertools example in the docs that finds consecutive runs。这是适应你的情况(未经测试):

#!/usr/bin/env python2
from itertools import groupby

data = [1441831770.0, 1441831780.0, 1441831790.0, ...]

longest = []
for k, g in groupby(enumerate(data), lambda (i,x): i*10 - int(x)):
    longest = max(longest, [x for _, x in g], key=len)
print longest