我有兴趣计算在30天内发生五次时间戳的事件。
我有一个创建了一个函数,我觉得它远不及pythonic。
我可以使用集合或迭代器或lambda。
这是我写的代码:
#include <stdio.h>
int main (int x) {
if((x/2) % 2 == 0) {
printf("YES");
}else {
printf("NO");
}
return 0;
}
答案 0 :(得分:1)
代码不适合您,因为您在内部循环中返回False
,因此您始终返回False
,因为您将count
初始化为0,并且第一次迭代ou只将计数增加1,因此count为1,且不大于5,因此返回False
。要使您的特定代码起作用,您需要将return False
移动到外部循环外部,直接在函数内部,else
块不应该在那里。
鉴于您可以使用以下方法简化代码 -
首先将时间戳从最低到最高排序。
然后检查每个时间戳之间的差异,并将其添加到一个值,为每5个连续项执行此操作。最后,如果添加5个连续时间戳的差异小于30 * 24 * 60 * 60
,则表示这5个日期属于30天范围,您可以在此时返回True。
如果未找到此类匹配项,请返回False。
示例代码 -
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