2013-07-03 3 views

ответ

4

Ваша проблема, вероятно, связана с факт, что у вас есть предложение lambda с использованием несвязанной переменной (i). Измените свой код так:

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

(I. е просто вставить, что , i=i.).

Таким образом, значение i является частью пункта лямбды и не берется из окружающей области.

+0

Спасибо! который зафиксировал это. Итак, если я правильно понимаю это, каждый раз, когда «i» увеличивает его, он обновляет «A [i]» для предыдущей записи в списке? – user2546580

+0

@ user2546580 вы можете принять ответ ... –

+0

Принятие было бы неплохо, но есть открытый вопрос; вот мой ответ: Да. Все созданные вами lambdas зависят от переменной с именем 'i', которую они не удерживают. Значение «i» в окружающей области определяет результат во время оценки. Если в это время в окружающем пространстве нет 'i', вы получите исключение. – Alfe

Смежные вопросы