]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Add "strict" to dotproduct(). Add docstring. Factor-out common code. (GH-100480)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sat, 24 Dec 2022 00:00:21 +0000 (16:00 -0800)
committerGitHub <noreply@github.com>
Sat, 24 Dec 2022 00:00:21 +0000 (16:00 -0800)
(cherry picked from commit f89de679ffec35e82548341cb23e675546602288)

Co-authored-by: Raymond Hettinger <rhettinger@users.noreply.github.com>
Doc/library/itertools.rst

index 8eb843ab0a67be5bcbac80e05834234b965a09b3..371f7c1fdcd4532e1f34c2d6782fc35b82899e97 100644 (file)
@@ -795,7 +795,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/
@@ -807,7 +808,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.