diff --git a/Lib/heapq.py b/Lib/heapq.py
index b361631..19a457b 100644
--- a/Lib/heapq.py
+++ b/Lib/heapq.py
@@ -130,7 +130,6 @@
            'nlargest', 'nsmallest', 'heappushpop']
 
 from itertools import islice, repeat, count, tee, chain
-from operator import itemgetter
 import bisect
 
 def heappush(heap, item):
@@ -377,13 +376,13 @@
     if key is None:
         it = zip(iterable, count())                         # decorate
         result = _nsmallest(n, it)
-        return list(map(itemgetter(0), result))             # undecorate
+        return [r[0] for r in result]                       # undecorate
 
     # General case, slowest method
     in1, in2 = tee(iterable)
     it = zip(map(key, in1), count(), in2)                   # decorate
     result = _nsmallest(n, it)
-    return list(map(itemgetter(2), result))                 # undecorate
+    return [r[2] for r in result]                           # undecorate
 
 _nlargest = nlargest
 def nlargest(n, iterable, key=None):
@@ -415,13 +414,13 @@
     if key is None:
         it = zip(iterable, count(0,-1))                     # decorate
         result = _nlargest(n, it)
-        return list(map(itemgetter(0), result))             # undecorate
+        return [r[0] for r in result]                       # undecorate
 
     # General case, slowest method
     in1, in2 = tee(iterable)
     it = zip(map(key, in1), count(0,-1), in2)               # decorate
     result = _nlargest(n, it)
-    return list(map(itemgetter(2), result))                 # undecorate
+    return [r[2] for r in result]                           # undecorate
 
 if __name__ == "__main__":
     # Simple sanity test
