2016-06-29 3 views
0

Новое на python - оцените помощь в работе функции dot и понимаете, что я делаю неправильно.Код рекурсии Неудача

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

Вам нужно возвратить '0' в, если заявление. – Psidom

+1

Как прокомментировал Psidom, вам нужно вернуть 0, если это так, что последний элемент может быть добавлен или у вас будет что-то вроде 2 + 3 + None, которое недействительно – Aquiles

+0

Еще одна вещь: «или» не собирается имеют какой-либо эффект, поскольку он всегда ложный. Я думаю, вы имеете в виду «или l ==» «». На самом деле я просто опустил этот пункт, требуя, чтобы вызывающий абонент перешел в список. –

ответ

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)) 
Смежные вопросы