MCPcopy Index your code
hub / github.com/RustPython/RustPython / nlargest

Function nlargest

Lib/heapq.py:537–593  ·  view source on GitHub ↗

Find the n largest elements in a dataset. Equivalent to: sorted(iterable, key=key, reverse=True)[:n]

(n, iterable, key=None)

Source from the content-addressed store, hash-verified

535 return [elem for (k, order, elem) in result]
536
537def nlargest(n, iterable, key=None):
538 """Find the n largest elements in a dataset.
539
540 Equivalent to: sorted(iterable, key=key, reverse=True)[:n]
541 """
542
543 # Short-cut for n==1 is to use max()
544 if n == 1:
545 it = iter(iterable)
546 sentinel = object()
547 result = max(it, default=sentinel, key=key)
548 return [] if result is sentinel else [result]
549
550 # When n>=size, it's faster to use sorted()
551 try:
552 size = len(iterable)
553 except (TypeError, AttributeError):
554 pass
555 else:
556 if n >= size:
557 return sorted(iterable, key=key, reverse=True)[:n]
558
559 # When key is none, use simpler decoration
560 if key is None:
561 it = iter(iterable)
562 result = [(elem, i) for i, elem in zip(range(0, -n, -1), it)]
563 if not result:
564 return result
565 heapify(result)
566 top = result[0][0]
567 order = -n
568 _heapreplace = heapreplace
569 for elem in it:
570 if top < elem:
571 _heapreplace(result, (elem, order))
572 top, _order = result[0]
573 order -= 1
574 result.sort(reverse=True)
575 return [elem for (elem, order) in result]
576
577 # General case, slowest method
578 it = iter(iterable)
579 result = [(key(elem), i, elem) for i, elem in zip(range(0, -n, -1), it)]
580 if not result:
581 return result
582 heapify(result)
583 top = result[0][0]
584 order = -n
585 _heapreplace = heapreplace
586 for elem in it:
587 k = key(elem)
588 if top < k:
589 _heapreplace(result, (k, order, elem))
590 top, _order, _elem = result[0]
591 order -= 1
592 result.sort(reverse=True)
593 return [elem for (k, order, elem) in result]
594

Callers

nothing calls this directly

Calls 6

iterFunction · 0.85
maxFunction · 0.85
lenFunction · 0.85
sortedFunction · 0.85
heapifyFunction · 0.85
sortMethod · 0.45

Tested by

no test coverage detected