用户将指定时间interval
n 秒/分钟/小时,然后两次(start
/ stop
)。
我需要能够执行此interval
,然后逐步执行start
和stop
次,以获取这些时间的列表。然后,我将通过table.objects.filter
执行数据库查找,以便检索每次对应的数据。
我现在正在制作一些可笑的长算法,我很肯定有一种更简单的方法可以做到这一点。也就是说,更多 pythonic 方式。想法?
答案 0 :(得分:4)
t = start
while t != stop:
t += interval
table.objects.filter(t)
答案 1 :(得分:4)
它也非常适合作为发电机:
def timeseq(start,stop,interval):
while start <= stop:
yield start
start += interval
用作:
for t in timeseq(start,stop,interval):
table.objects.filter(t)
或:
data = [table.objects.filter(t) for t in timeseq(start,stop,interval)]
答案 2 :(得分:1)
怎么样......
result = RelevantModel.objects.filter(relavant_field__in=[
start + interval * i
for i in xrange((start - end).seconds / interval.seconds)
])
......?
我无法想象这与你正在做的事情有很大不同,但也许它更紧凑(特别是如果你没有使用foo__in=[bar]
或列表理解)。当然start和end是datetime.datetime对象,interval是datetime.timedelta对象。