from scipy.special import eval_legendre M0 = 6 f0_l = [lambda x: eval_legendre(i, x) for i in range(M0)]
f0_l[0](0.5)
При внимательном рассмотрение оказывается что при выполнении генераторного выражения в области видимости появляется переменная i значением 5. И все элементы списка видят эту переменную и определяют порядок полинома по ней.
Как поправить, чтобы в списке функции просто вычисляли полином с порядком
заданным в генераторном выражении.
Python 2.7.9