I have two lists, one is named as A, another is named as B. Each element in A is a triple, and each element in B is just an number. I would like to calculate the result defi
My favorite Pythonic dot product is:
sum([i*j for (i, j) in zip(list1, list2)])
So for your case we could do:
sum([i*j for (i, j) in zip([K[0] for K in A], B)])
Probably the most Pythonic way for this kind of thing is to use numpy. ;-)
>>> X = [2,3,5,7,11]
>>> Y = [13,17,19,23,29]
>>> dot = lambda X, Y: sum(map(lambda x, y: x * y, X, Y))
>>> dot(X, Y)
652
And that's it.
Using more_itertools, a third-party library that implements the dotproduct
itertools recipe:
import more_itertools as mit
a = [1, 2, 3]
b = [7, 8, 9]
mit.dotproduct(a, b)
# 50