Python 嵌套列表中的点积

Python 嵌套列表中的点积,python,python-3.x,list,nested,dot-product,Python,Python 3.x,List,Nested,Dot Product,我想问一下,是否可以在这个嵌套列表a=[[1,2,3]、[2,4,2]、[1,2,3]、[5,6,7]]中创建点积,而不使用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) 但是,我收到一条错误消息: 没

我想问一下,是否可以在这个嵌套列表a=[[1,2,3]、[2,4,2]、[1,2,3]、[5,6,7]]中创建点积,而不使用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)


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

换言之:

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

>>> i
(1, 2, 1, 5)
>>> j
(2, 4, 2, 6)
>>> k
(3, 2, 3, 7)
然后取
和((1*2*1*5,2*4*2*6,3*2*3*7))

可能的重复项
>>> i, j, k = zip(*a)

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