Как мне отменить ys?

#python #list

#python #Список

Вопрос:

 def convolute_0(xs,ys):
    
sum([x*y for x,y in zip(xs,ys[::-1])])
    
    

assert convolute_0([1], [10] ) == 1*10
assert convolute_0([1,2], [10,20] ) == 1*20   2*10
assert convolute_0([1,2,3], [10,20,30] ) == 1*30   2*20   3*10
 

Я хочу умножить xs на обратный список ys.С помощью [::-1] я получаю ошибку утверждения.

Комментарии:

1. Ваш метод ничего не возвращает

Ответ №1:

Как прокомментировал @arzo, ваш метод не возвращает ничего, что является ошибкой. Это способ:

 def convolute_0(xs,ys):
    
    return sum([x*y for x,y in zip(xs,ys[::-1])])
    
assert convolute_0([1], [10] ) == 1*10
assert convolute_0([1,2], [10,20] ) == 1*20   2*10
assert convolute_0([1,2,3], [10,20,30] ) == 1*30   2*20   3*10
 

Ответ №2:

проблема здесь в том, что вы не можете изменить тип int с помощью ys[::-1], который вы можете сделать:

 def convolute_0(xs,ys):

   return sum([x*int(y) for x,y in zip(xs,[i[::-1] for i in [str(i) for i in ys]])])
 

Комментарии:

1. xs и ys являются списками, поэтому возможно обратное