之间有什么区别
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)})
答案 0 :(得分: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子句的一部分,而不是从周围的范围中获取。