1

我想知道队列中最近排队的项目是什么。我怎么知道这个?

换句话说,如何找到队列将出队的最后一个项目(或最近入队的项目)

4

2 回答 2

1

我不完全确定您要在这里实现什么,但以下可能有效,只需检查队列是否为空。

>>> from Queue import Queue
>>> q = Queue()    
>>> _ = [q.put(index) for index in xrange(2, 10)]
>>> if not q.empty():
...    q.queue[-1]
9
>>> 

我假设您使用的是 python 自己的Queue对象,我会推荐它,因为它是线程安全的:)

于 2012-10-10T01:25:37.543 回答
0

你是如何实现你的队列的?如果它被实现为一个列表,那么大概yourdata.pop(0)会删除并返回第一个项目。最近排队的项目将位于列表的末尾,yourdata.pop()以删除并返回,或者 yourdata[-1] 以查看项目而不修改列表内容。

将列表用于队列是一个坏主意,因为您会招致性能损失,但是:每次删除第一个项目时,都必须更新列表中的所有后续项目。您将从专门的队列实现中获得更好的性能,例如collections.deque. 参见讨论: http ://docs.python.org/tutorial/datastructures.html#using-lists-as-queues

有关 Python 中 Queue 与 deque 的信息,请参阅: Queue.Queue 与 collections.deque

于 2012-10-10T01:20:29.357 回答