2016-04-19 10 views
2

Sympyを使ってx^0からx^n(特にn = 9)から基本単項式のリストを生成したいと考えています。私の迅速な解決にはPythonのラムダ関数の構文と組み合わせたシンプルなリスト内包である:Sympyとlambda関数

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が構築されていることを確認したときに、しかし

import sympy as sym 
x = sym.symbols('x') 

monomials = [lambda x: x**n for n in range(10)] 

、私はそれを見つけますラムダ構文を使用して、私は別の方法で期待するものを得ます:

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

私はアナコンダ2.5.0(64ビット)パッケージマネージャを使用しています。

答えて

0

あなたはそうあなたが閉鎖を持っているとnに値ではなく、参照を取得しませ既定値で

monomials = [lambda x, n=n: x**n for n in range(10)] 

を第二引数を使用する必要があります。

関連する問題