类似Python队列的数据结构

2 投票
3 回答
4143 浏览
提问于 2025-04-18 11:51

我正在处理一个列表,这个列表会不时地接收新元素。当这些新元素被添加进来后,我想对它们进行一些计算(具体来说,是估算一个KDE)。我很快意识到,如果这个列表无限增长,计算KDE函数会非常耗时,所以我觉得使用队列(Queue)会是一个不错的数据结构。不过,标准的Python队列(https://docs.python.org/2/library/queue.html)不允许我在不“弹出”元素的情况下访问队列中的单个元素。有没有什么替代方案呢?

换句话说:有没有什么Python库可以让我在不弹出元素的情况下获取队列中的元素?(或者允许像数组那样索引队列元素的?)

3 个回答

0

我不明白为什么要用队列,如果你不使用弹出机制的话。如果你担心你的数组会过载,可以使用一个数组和一个队列。第一个是等待队列,第二个是处理数组

你还可以对你的循环做一些优化,让它运行得更快。

比如你可以把

import xxx

for a in b_array:
   xxx.do_something(a)

改成这样:

import xxx

ds = xxx.do_something  #linking a function in memory speeds up foreach performance very much
for a in b_array:
   ds(a)

我觉得你的问题不在于队列的大小。如果是的话,你得检查一下你之前的代码。

5

听起来你可以很好的利用 deque 这个东西:

https://docs.python.org/2/library/collections.html#collections.deque

0

正如@RemcoGerlich所建议的,我认为最好的办法是保持一个索引指针,这个指针可以“记住”下一个合适的写入位置,记得要对列表的大小取模。这样做可以让我们在使用numpy时实现得非常快,同时也能帮助我达到我设定的目标。

撰写回答