我有一个非常长的unix时间列表(四舍五入到10s),我需要找到该列表中相隔10s的最长时间序列序列。
[1441831770.0, 1441831780.0, 1441831790.0, ... 1442466860.0, 1442466870.0, 1442466880.0]
如果我有一个包含100个时间戳的列表,其中60个是600秒长的序列,然后是4分钟的休息时间,然后是400秒长的另一个40,我将返回60秒长的时间戳子列表
有一种有效的方法吗? itertools
或numpy
?还是必须硬编码?
感谢。
答案 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