在不重置的情况下,只显示最近收到的n个数据点,可以使用一个队列来存储最近收到的数据点,并在超过n个数据点时删除最早收到的数据点。
以下是一个示例代码:
from collections import deque
class RecentData:
def __init__(self, n):
self.n = n
self.data_queue = deque()
def add_data(self, data_point):
if len(self.data_queue) >= self.n:
self.data_queue.popleft() # 删除最早收到的数据点
self.data_queue.append(data_point)
def get_recent_data(self):
return list(self.data_queue)
# 示例用法
recent_data = RecentData(5)
recent_data.add_data(1)
recent_data.add_data(2)
recent_data.add_data(3)
recent_data.add_data(4)
recent_data.add_data(5)
recent_data.add_data(6)
print(recent_data.get_recent_data()) # 输出 [2, 3, 4, 5, 6]
在上面的代码中,我们使用deque
(双端队列)来实现一个最近数据的存储。在调用add_data
方法添加新的数据点时,如果队列长度超过了设定的n,就删除队列中最早收到的数据点。调用get_recent_data
方法可以获取最近收到的n个数据点。
在示例中,我们创建了一个RecentData
对象,并设置n为5。然后我们连续添加了6个数据点(1到6),超过了n的限制。最后输出的结果是最近收到的5个数据点:[2, 3, 4, 5, 6]。