Add "strict" to dotproduct(). Add docstring. Factor-out common code. … · python/cpython@9477594

GitHub

@@ -795,7 +795,8 @@ which incur interpreter overhead.

795795 return chain.from_iterable(repeat(tuple(iterable), n))

796796797797 def dotproduct(vec1, vec2):

798- return sum(map(operator.mul, vec1, vec2))

798+ "Compute a sum of products."

799+ return sum(starmap(operator.mul, zip(vec1, vec2, strict=True)))

799800800801 def convolve(signal, kernel):

801802 # See: https://betterexplained.com/articles/intuitive-convolution/

@@ -807,7 +808,7 @@ which incur interpreter overhead.

807808 window = collections.deque([0], maxlen=n) * n

808809 for x in chain(signal, repeat(0, n-1)):

809810 window.append(x)

810- yield sum(map(operator.mul, kernel, window))

811+ yield dotproduct(kernel, window)

811812812813 def polynomial_from_roots(roots):

813814 """Compute a polynomial's coefficients from its roots.