Почему код, показывающий NameError для следующего кода - PullRequest
0 голосов
/ 28 февраля 2020
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' не определено

1 Ответ

2 голосов
/ 28 февраля 2020

Во-первых, вы не должны переопределять сумму, поскольку она является встроенной, но проблема не в этом. Проблема в скобках. Вы закрываете лямбда-скобки перед знаком плюс. Вы можете попробовать что-то вроде этого:

reduce(lambda x,y: x*(1/2**a.index(x)) + y*(1/2**a.index(y)), li)
...