嵌套列表python中的点积

时间:2018-03-13 14:48:24

标签: python python-3.x list nested dot-product

我想问一下是否有可能在这个嵌套列表中创建一个点积a = [[1,2,3],[2,4,2],[1,2,3],[5 ,6,7]]在Python中没有使用numpy

我试过了:

a = [[1,2,3],[2,4,2],[1,2,3], [5,6,7]]

for x, y in zip(a):
    temp = []
    for m, n in zip(x):
        temp.append(m * n)
    c.append([sum(temp)])

print(c)

但是我收到了一条错误消息:

  

没有足够的值解包(预期2,得1)

1 个答案:

答案 0 :(得分:1)

您可以解压缩并压缩a,然后使用operatorreduce(内置于Python 2.x):

>>> from functools import reduce
>>> from operator import mul
>>> sum(reduce(mul, i) for i in zip(*a))
232

换句话说:

>>> i, j, k = zip(*a)

>>> i
(1, 2, 1, 5)
>>> j
(2, 4, 2, 6)
>>> k
(3, 2, 3, 7)

然后你拿sum( (1*2*1*5, 2*4*2*6, 3*2*3*7) )