from functools import reduce li = [5, 8, 10, 20, 50, 100] sum = reduce((lambda x,y: x*(1/2**li.index(x))) + y*(1/2**li.index(y)) , li) print(sum)
Отображаемая ошибка: NameError: имя 'y' не определено
Во-первых, вы не должны переопределять сумму, поскольку она является встроенной, но проблема не в этом. Проблема в скобках. Вы закрываете лямбда-скобки перед знаком плюс. Вы можете попробовать что-то вроде этого:
reduce(lambda x,y: x*(1/2**a.index(x)) + y*(1/2**a.index(y)), li)