这是一种特殊情况,我知道。这是一个程序拍摄的照片捕获时间戳列表,该程序在定期获取数据方面表现不佳。
说我有这些时间戳:
2012-01-11 10:53:19
2012-01-11 10:53:24
2012-01-11 10:53:29
2012-01-11 10:53:35
2012-01-11 10:53:40
2012-01-11 11:03:20
2012-01-11 11:03:25
2012-01-11 11:03:30
2012-01-11 11:13:20
2012-01-11 11:13:25
2012-01-11 11:13:30
2012-01-11 11:13:35
2012-01-11 11:23:19
2012-01-11 11:23:24
2012-01-11 11:23:30
2012-01-11 11:23:35
2012-01-11 11:23:44
2012-01-11 11:24:03
我想要一个列表,这个列表被缩小到相隔至少5分钟的日期时间,并且在那个时间之外没有其他人。所以对于上面的例子,我想:
2012-01-11 10:53:19
2012-01-11 11:03:20
2012-01-11 11:13:20
2012-01-11 11:23:19
答案 0 :(得分:0)
您可以使用datetime
对象之间的比较,例如:
>>> from datetime import datetime
>>> test_1 = datetime.strptime('2012-01-11 11:00:00', '%Y-%m-%d %I:%M:%S')
>>> test_2 = datetime.strptime('2012-01-11 11:10:00', '%Y-%m-%d %I:%M:%S')
>>> date1 = datetime.strptime('2012-01-11 11:03:30', '%Y-%m-%d %I:%M:%S')
>>> test_1 > date1
False
>>> test_2 > date1
True
答案 1 :(得分:0)
我不确定最好的方法。我已经开始循环遍历它们,保留最后一个间隔时间戳并比较差异,但这看起来有点粗糙。
这几乎是唯一的方法。列表理解不是更清晰:
def select(v):
threshold = 5
if len(selected) > 0 and v < selected[-1] + threshold:
return False
selected.append(v)
return True
timestamps = [1, 2, 5, 6, 7, 10, 11, 12]
selected = []
print([x for x in timestamps if select(x)]) # 1, 6, 11
请注意,仅凭列表理解是不可能的,因为无法知道所选内容。