1

違いは何ですか

for i in range(0,3): print cons[i]['fun'](x0)

for f in cons: print f['fun'](x0)

ここで、cons は次のように定義されます

A = np.asmatrix([[1,0,0],[0,1,0],[0,0,1]])
x0 = np.asarray([1,2,0])
cons = list()
for i in range(0,3): cons.append({'fun':lambda x: np.dot(A[i],x)})
4

1 に答える 1

4

あなたの問題はおそらく、バインドされていない変数 ( i) を使用してラムダ句を使用しているという事実に関連しています。コードを次のように変更します。

for i in range(0,3): cons.append({'fun':lambda x, i=i: np.dot(A[i],x)})

(つまり、それを挿入するだけです, i=i。)

このように、値はiラムダ句の一部であり、周囲のスコープから取得されません。

于 2013-07-03T13:32:22.727 に答える