]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Use match/case in grouper() recipe (gh-113059)
authorRaymond Hettinger <rhettinger@users.noreply.github.com>
Wed, 13 Dec 2023 18:11:52 +0000 (12:11 -0600)
committerGitHub <noreply@github.com>
Wed, 13 Dec 2023 18:11:52 +0000 (12:11 -0600)
Use match/case in grouper() reciper

Doc/library/itertools.rst

index 8a4254cf15ebe29dd3057894fb7860238cae7fbd..56c66f670c74dd42141aa3a9befbe4c8008ba79c 100644 (file)
@@ -914,14 +914,15 @@ which incur interpreter overhead.
        # grouper('ABCDEFG', 3, incomplete='strict') --> ABC DEF ValueError
        # grouper('ABCDEFG', 3, incomplete='ignore') --> ABC DEF
        args = [iter(iterable)] * n
-       if incomplete == 'fill':
-           return zip_longest(*args, fillvalue=fillvalue)
-       elif incomplete == 'strict':
-           return zip(*args, strict=True)
-       elif incomplete == 'ignore':
-           return zip(*args)
-       else:
-           raise ValueError('Expected fill, strict, or ignore')
+       match incomplete:
+           case 'fill':
+               return zip_longest(*args, fillvalue=fillvalue)
+           case 'strict':
+               return zip(*args, strict=True)
+           case 'ignore':
+               return zip(*args)
+           case _:
+               raise ValueError('Expected fill, strict, or ignore')
 
    def sliding_window(iterable, n):
        # sliding_window('ABCDEFG', 4) --> ABCD BCDE CDEF DEFG