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) 的 lambda 子句有关。像这样更改您的代码:

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

(即,只需插入那个, i=i。)

这样, 的值i是 lambda 子句的一部分,而不是取自周围的范围。

于 2013-07-03T13:32:22.727 回答