Add "strict" to dotproduct(). Add docstring. Factor-out common code. (GH-100480)

This commit is contained in:
Raymond Hettinger 2022-12-23 15:52:16 -08:00 committed by GitHub
parent 474220e3a5
commit f89de679ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 3 additions and 2 deletions

View File

@ -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.