Roy Smith <r...@panix.com> wrote:

> 
> I'm processing a stream of N numbers and want to keep track of the K 
> largest.  There's too many numbers in the stream (i.e. N is too large)
> to keep in memory at once.  K is small (100 would be typical).
> ... 
> Is there a better way to do this, either from a theoretical running
> time point of view, or just a nicer way to code this in Python?

How about:

  from heapq import nlargest
  top = nlargest(K, input())

It uses a heap so avoids completely resorting each time.

-- 
Duncan Booth http://kupuguy.blogspot.com
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to