Commit bd171bcf authored by Raymond Hettinger's avatar Raymond Hettinger

Port r69838: Speedup and simplify negative counter using count's new step argument.

parent 934896dc
...@@ -130,7 +130,7 @@ __all__ = ['heappush', 'heappop', 'heapify', 'heapreplace', 'merge', ...@@ -130,7 +130,7 @@ __all__ = ['heappush', 'heappop', 'heapify', 'heapreplace', 'merge',
'nlargest', 'nsmallest', 'heappushpop'] 'nlargest', 'nsmallest', 'heappushpop']
from itertools import islice, repeat, count, tee, chain from itertools import islice, repeat, count, tee, chain
from operator import itemgetter, neg from operator import itemgetter
import bisect import bisect
def heappush(heap, item): def heappush(heap, item):
...@@ -413,13 +413,13 @@ def nlargest(n, iterable, key=None): ...@@ -413,13 +413,13 @@ def nlargest(n, iterable, key=None):
# When key is none, use simpler decoration # When key is none, use simpler decoration
if key is None: if key is None:
it = zip(iterable, map(neg, count())) # decorate it = zip(iterable, count(0,-1)) # decorate
result = _nlargest(n, it) result = _nlargest(n, it)
return list(map(itemgetter(0), result)) # undecorate return list(map(itemgetter(0), result)) # undecorate
# General case, slowest method # General case, slowest method
in1, in2 = tee(iterable) in1, in2 = tee(iterable)
it = zip(map(key, in1), map(neg, count()), in2) # decorate it = zip(map(key, in1), count(0,-1), in2) # decorate
result = _nlargest(n, it) result = _nlargest(n, it)
return list(map(itemgetter(2), result)) # undecorate return list(map(itemgetter(2), result)) # undecorate
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment