我使用scipy优化最小化包。为了为我的问题提供约束,我需要创建一个庞大的元组。我这样做以下列方式:python中lambda函数的列表参数
c0 = [];
count = 0;
for i in range(0, Nx):
for j in range(0, Ny):
c0.append({'type': 'eq', 'fun': lambda x: x[count]*x[count] + x[T + count]*x[T + count] + x[2*T + count]*x[2*T + count] - 1.});
count+=1;
cons = tuple(c0);
但当极小需要他们来使用,总是需要的count
终值,这显然会导致成index out of bounds
错误。尝试del(count)
导致了另一个错误,所以我想我的lambda函数用法的python方式的理解有问题。也许有更好的,使用切片和东西的python风格的方式?将不胜感激任何帮助。
lambda中的名称将计算为lambda运行时名称的值,而不是创建时的值。这解释了您的终端计数问题。有关更多信息,请参见[Python嵌套函数中的局部变量](http://stackoverflow.com/q/12423614/953482)。 – Kevin