Python中两个列表的点积

Ben*_*oks 2 python product list numeric

我需要编写应输出列表L和K的点积的函数dot(L,K).如果这两个输入列表的长度不相等,则dot应输出0.如果这两个列表都是空的,则点也应输出0.您应该假设输入列表仅包含数值.

这是我到目前为止:

def dot( L, K ):
    if len[L]!=len[K]:
        return 0
    elif L == '' or L == []:
        return 0
    else:
        return sum(L[0]*K[0], L[1]*K[1], ect.)
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我,因为我无法弄清楚在最后一行做什么!

VHa*_*sop 14

您可以使用列表解析来执行此操作:

def dot(K, L):
   if len(K) != len(L):
      return 0

   return sum(i[0] * i[1] for i in zip(K, L))
Run Code Online (Sandbox Code Playgroud)

如果其中一个列表为空,zip(K, L)则返回[].然后,根据定义,sum([])将给你零.

  • @ PM2Ring,我不知道老师会怎么想`return len(K)== len(L)and sum(starmap(mul,zip(K,L)))或0` (2认同)

小智 5

使用列表推导,给定V1和V2是两个向量(列表):

 sum([x*y for x,y in zip(V1,V2)])
Run Code Online (Sandbox Code Playgroud)