from sympy import symbols
from functools import reduce
from operator import mul
product = lambda *args: reduce(mul, *(list(args) + [1]))
def lagrange_sympy(xs, ys):
return sum(ys[index]*product((symbols('x')-xi)/(xs[index]-xi) for i, xi in enumerate(xs) if i != index) for index in range(len(xs)))
lagrange_sympy([1, 2, 3], [10, 5, 7])
f = lagrange_sympy([1, 2, 3], [10, 5, 7])
f.evalf()
from sympy import simplify
simplify(f)
f.subs(symbols('x'), 0)
f.subs(symbols('x'), 1)