我使用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