Лямбда-выражение возможно благодаря великолепным базовым функциям Python! Первое - получить пары (коэф, экспоненты) с помощью мощной функции zip
:
>>> l = [3, 0, 4, -9]
>>> range(len(l) - 1, -1, -1)
[3, 2, 1, 0]
>>> zip(l, range(len(l) - 1, -1, -1))
[(3, 3), (0, 2), (4, 1), (-9, 0)]
Я использую перевернутый range
, так как большие показатели находятся в начале списка. Теперь полином - это сумма ... вычисленная благодаря функции sum
!
>>> f = lambda x: sum([coef*x**exp for (coef, exp) in zip(l, range(len(l) - 1, -1, -1))])
>>> f(3)
84
и действительно 3*3^3 + 0*3^2 + 4*3^1 - 9*3^0 = 3*27 + 0 + 4*3 - 9*1 = 81 + 12 - 9 = 84
.
Это выражение f
является правильным для всего списка значений l
независимо от его длины, благодаря использованию len(l)
.