On Wed, 04 Dec 2013 08:13:03 +1100, Cameron Simpson wrote: > On 03Dec2013 12:18, Helmut Jarausch <jarau...@igpm.rwth-aachen.de> wrote: >> I'd like to extracted elements from a heapq in a for loop. >> I feel my solution below is much too complicated. >> How to do it more elegantly? > > I can't believe nobody has mentioned PriorityQueue. > > A PriorityQueue (from the queue module in python 3 and the Queue > module in python 2) is essentially just a regular Queue using a > heapq for the storage. > > Example (untested): > > from Queue import PriorityQueue > > PQ = PriorityQueue() > for item in [1,2,3,7,6,5,9,4]: > PQ.put(item) > > while not PQ.empty(): > item = PQ.get() > ... do stuff with item ... > > I iterate over Queues so often that I have a personal class called > a QueueIterator which is a wrapper for a Queue or PriorityQueue > which is iterable, and an IterablePriorityQueue factory function. > Example: > > from cs.queues import IterablePriorityQueue > > IPQ = IterablePriorityQueue() > for item in [1,2,3,7,6,5,9,4]: > IPQ.put(item) > > for item in IPQ: > ... do stuff with item ... > > Cheers,
Many thanks! I think you QueueIterator would be a nice addition to Python's library. Helmut -- https://mail.python.org/mailman/listinfo/python-list