From: Raymond Hettinger Date: Fri, 20 May 2022 23:02:33 +0000 (-0500) Subject: Take advantage of math.comb() in the nth_combination() recipe (#93027) X-Git-Tag: v3.12.0a1~1476 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=59719a242d2191802476f5065236665379e226ac;p=thirdparty%2FPython%2Fcpython.git Take advantage of math.comb() in the nth_combination() recipe (#93027) --- diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst index 26c9253cb7f5..416c4eca5eb4 100644 --- a/Doc/library/itertools.rst +++ b/Doc/library/itertools.rst @@ -992,12 +992,7 @@ which incur interpreter overhead. "Equivalent to list(combinations(iterable, r))[index]" pool = tuple(iterable) n = len(pool) - if r < 0 or r > n: - raise ValueError - c = 1 - k = min(r, n-r) - for i in range(1, k+1): - c = c * (n - k + i) // i + c = math.comb(n, r) if index < 0: index += c if index < 0 or index >= c: @@ -1071,6 +1066,7 @@ which incur interpreter overhead. >>> import operator >>> import collections + >>> import math >>> take(10, count()) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]