Форум сайта python.su
Итак, сразу к делу:
Есть пародия на функцию от 2 аргументов -
lf - список маленьких функций
la - список интовых чисел
функция должна у каждого куска логического массива делать примерно это:
было: lf равен lambda x:2*x
la равен 3
стало: lambda x: 2(x+3)
в моём исполнении она выглядела так -
def superjuk(lf,la):
return [(lambda x: lf(x+la)) for i in xrange(0,len(la))]
при этом при её прогоне от
lf =
la=
f=superjuk(lf,la)
for i in xrange(0,len(f))
print f
полученное значение, новоприсвоенное другой переменной и выведенное циклом БЕЗ ОШИБОК(пробовал по всякому, даже вручную) на выходе все функции в списке кроме последней равны последней:
-6 -6 -6
вместо
16 8 -6
Что надо с функцией сделать, что бы вывод стал таким и почему это происходит в моей вариации? Заранее спасибо!
Офлайн
Вот так должно сработать:
def superjuk(lf,la):
return [(lambda x, y=i: lf[y](x+la[y])) for i in xrange(0,len(la))]
Офлайн
спсибо. Функцию расчленил и теперь всё работает. Сяп.
Офлайн