Я хочу сгенерировать список базового монома от x^0 до x^n (в частности, n = 9) с помощью Sympy. Мое быстрое решение простой список понимание в сочетании с синтаксисом функции лямбда Пайтона:Sympy и лямбда-функции
import sympy as sym
x = sym.symbols('x')
monomials = [lambda x: x**n for n in range(10)]
Однако, когда я проверить, что monomials
строится, как и ожидалось, я считаю, что:
print([f(x) for f in monomials])
>>> [x**9, x**9, x**9, x**9, x**9, x**9, x**9, x**9, x**9, x**9]
Если я переопределить monomials
без используя синтаксис лямбда, я получаю то, что в противном случае ожидал бы:
monomials = [x**n for n in range(10)]
print(monomials)
>>> [1, x, x**2, x**3, x**4, x**5, x**6, x**7, x**8, x**9]
Почему у меня такое поведение?
функции:
- Python 3.5.1
- SymPy 1,0
Я использую менеджер пакетов Anaconda 2.5.0 (64-бит).