类似Python队列的数据结构
我正在处理一个列表,这个列表会不时地接收新元素。当这些新元素被添加进来后,我想对它们进行一些计算(具体来说,是估算一个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时实现得非常快,同时也能帮助我达到我设定的目标。