gpt4 book ai didi

python - 按另一个日期列表拆分日期列表

转载 作者:太空宇宙 更新时间:2023-11-04 11:05:35 25 4
gpt4 key购买 nike

我在网络中有许多节点。节点每小时发送一次状态信息以表明它们还活着。所以我有一个节点列表和它们最后存活的时间。我想绘制随时间变化的事件节点数。

节点列表按它们最后一次存活的时间排序,但我想不出一个很好的方法来计算每个日期有多少存活。

from datetime import datetime, timedelta

seen = [ n.last_seen for n in c.nodes ] # a list of datetimes
seen.sort()
start = seen[0]
end = seen[-1]

diff = end - start
num_points = 100

step = diff / num_points

num = len( c.nodes )

dates = [ start + i * step for i in range( num_points ) ]

基本上我想要的是

alive = [ len([ s for s in seen if s > date]) for date in dates ]

但这并不是很有效。解决方案应该利用 seen 列表已排序这一事实,而不是针对每个日期遍历整个列表。

最佳答案

这个生成器只遍历列表一次:

def get_alive(seen, dates):
c = len(seen)
for date in dates:
for s in seen[-c:]:
if s >= date: # replaced your > for >= as it seems to make more sense
yield c
break
else:
c -= 1

关于python - 按另一个日期列表拆分日期列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1368802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com