计算时间戳的计数

时间:2015-08-12 03:23:48

标签: python collections count

我有兴趣计算在30天内发生五次时间戳的事件。

我有一个创建了一个函数,我觉得它远不及pythonic。

我可以使用集合或迭代器或lambda。

这是我写的代码:

#include <stdio.h>
int main (int x) {
    if((x/2) % 2 == 0) {
        printf("YES");
    }else {
        printf("NO");
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

代码不适合您,因为您在内部循环中返回False,因此您始终返回False,因为您将count初始化为0,并且第一次迭代ou只将计数增加1,因此count为1,且不大于5,因此返回False。要使您的特定代码起作用,您需要将return False移动到外部循环外部,直接在函数内部,else块不应该在那里。

鉴于您可以使用以下方法简化代码 -

  1. 首先将时间戳从最低到最高排序。

  2. 然后检查每个时间戳之间的差异,并将其添加到一个值,为每5个连续项执行此操作。最后,如果添加5个连续时间戳的差异小于30 * 24 * 60 * 60,则表示这5个日期属于30天范围,您可以在此时返回True。

  3. 如果未找到此类匹配项,请返回False。

  4. 示例代码 -

    def has_five_or_more_in_ANY_30_days(timestamps):
        tssorted = sorted(timestamps)
        time_to_check = 30 * 24 * 60 * 60
        for i in range(0,len(tssorted)-5):
            time_diff = 0
            for j in range(i+1,i+5):
                time_diff += tssorted[j] - tssorted[i]
            if time_diff < time_to_check:
                return True
        return False