From: Raymond Hettinger Date: Fri, 23 Dec 2022 23:52:16 +0000 (-0800) Subject: Add "strict" to dotproduct(). Add docstring. Factor-out common code. (GH-100480) X-Git-Tag: v3.12.0a4~142 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f89de679ffec35e82548341cb23e675546602288;p=thirdparty%2FPython%2Fcpython.git Add "strict" to dotproduct(). Add docstring. Factor-out common code. (GH-100480) --- diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst index 9146ed1bfb62..9688aae68e6c 100644 --- a/Doc/library/itertools.rst +++ b/Doc/library/itertools.rst @@ -834,7 +834,8 @@ which incur interpreter overhead. return chain.from_iterable(repeat(tuple(iterable), n)) def dotproduct(vec1, vec2): - return sum(map(operator.mul, vec1, vec2)) + "Compute a sum of products." + return sum(starmap(operator.mul, zip(vec1, vec2, strict=True))) def convolve(signal, kernel): # See: https://betterexplained.com/articles/intuitive-convolution/ @@ -846,7 +847,7 @@ which incur interpreter overhead. window = collections.deque([0], maxlen=n) * n for x in chain(signal, repeat(0, n-1)): window.append(x) - yield sum(map(operator.mul, kernel, window)) + yield dotproduct(kernel, window) def polynomial_from_roots(roots): """Compute a polynomial's coefficients from its roots.