diff options
| author | Alexander Marshalov <_@marshalov.org> | 2018-07-24 10:58:21 +0700 |
|---|---|---|
| committer | Raymond Hettinger <rhettinger@users.noreply.github.com> | 2018-07-23 20:58:21 -0700 |
| commit | e22072fb11246f125aa9ff7629c832b9e2407ef0 (patch) | |
| tree | 8cbe81568e233643182d0c952b62c6fdf3ba060a /Lib | |
| parent | bde782bb594edffeabe978abeee2b7082ab9bc2a (diff) | |
| download | cpython-git-e22072fb11246f125aa9ff7629c832b9e2407ef0.tar.gz | |
bpo-34149: Behavior of the min/max with key=None (GH-8328)
Improve consistency with the signature for sorted(), heapq.nsmallest(), heapq.nlargest(), and itertools.groupby().
Diffstat (limited to 'Lib')
| -rw-r--r-- | Lib/heapq.py | 10 | ||||
| -rw-r--r-- | Lib/test/test_builtin.py | 4 |
2 files changed, 6 insertions, 8 deletions
diff --git a/Lib/heapq.py b/Lib/heapq.py index b31f4186cf..0e3555cf91 100644 --- a/Lib/heapq.py +++ b/Lib/heapq.py @@ -468,10 +468,7 @@ def nsmallest(n, iterable, key=None): if n == 1: it = iter(iterable) sentinel = object() - if key is None: - result = min(it, default=sentinel) - else: - result = min(it, default=sentinel, key=key) + result = min(it, default=sentinel, key=key) return [] if result is sentinel else [result] # When n>=size, it's faster to use sorted() @@ -531,10 +528,7 @@ def nlargest(n, iterable, key=None): if n == 1: it = iter(iterable) sentinel = object() - if key is None: - result = max(it, default=sentinel) - else: - result = max(it, default=sentinel, key=key) + result = max(it, default=sentinel, key=key) return [] if result is sentinel else [result] # When n>=size, it's faster to use sorted() diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index 8f91bc9bf9..233c579356 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -905,6 +905,8 @@ class BuiltinTest(unittest.TestCase): self.assertEqual(max((), default=1, key=neg), 1) self.assertEqual(max((1, 2), default=3, key=neg), 1) + self.assertEqual(max((1, 2), key=None), 2) + data = [random.randrange(200) for i in range(100)] keys = dict((elem, random.randrange(50)) for elem in data) f = keys.__getitem__ @@ -957,6 +959,8 @@ class BuiltinTest(unittest.TestCase): self.assertEqual(min((), default=1, key=neg), 1) self.assertEqual(min((1, 2), default=1, key=neg), 2) + self.assertEqual(min((1, 2), key=None), 1) + data = [random.randrange(200) for i in range(100)] keys = dict((elem, random.randrange(50)) for elem in data) f = keys.__getitem__ |
