2016-06-29 5 views
0

pythonの新機能 - 機能のドットの働きを理解し、私が間違っていることを理解していただきありがとうございます。再帰コードが失敗する

def dot(l,k): """multiply each elements in list l with each element from list k and return the total 
    """ 
    total = 0 


    if l == [] or '': 
     return 
    else: 
     last_l = l[-1] 
     last_2 = k[-1] 
     total += last_2 * last_l 
     return total + dot(l[:-1], k[:-1]) 

l = [1, 2] 
k = [3, 4] 

print(dot(l,k)) 
+2

。 – Psidom

+1

Psidomがコメントしたように、if要素に0を返す必要があるので、最後の要素を追加するか、2 + 3 + Noneなどの無効な要素を持つようにしてください。 – Aquiles

+0

もう一つのこと: "or" 'は行かないそれは常に偽であるので何らかの効果があります。私はあなたが "またはl ==" "'を意味すると思います。実際には、呼び出し元にリストを渡す必要があるという条項を省略しています。 –

答えて

0

あなたは、マップを使用してそれを行うと、非常にシンプルな方法で減らすことができます:あなたはif文で '0'返す必要が

l1=[1,2] 
l2=[2,3] 

mult = lambda l1,l2: [x*y for x,y in zip(l1,l2)] 

print reduce(lambda x,y: x+y,mult(l1,l2)) 
関連する問題