fun with lambdas

J

Juan Pablo Romero

Hello!

given the definition

def f(a,b): return a+b

With this code:

fs = [ lambda x: f(x,o) for o in [0,1,2]]

or this

fs = []
for o in [0,1,2]:
fs.append( lambda x: f(x,o) )

I'd expect that fs contains partial evaluated functions, i.e.

fs[0](0) == 0
fs[1](0) == 1
fs[2](0) == 2

But this is not the case :(

What is happening here?


Nevertheless, this code does work

fs = [ eval("lambda x: f(x,%d)" % o) for o in [0,1,2,3]]

Thanks.

Juan Pablo
 
B

bonono

You are asking it to return a list of lambda, not its evaluated value.

map(lambda x: f(x,0), [0,1,2]) works.

[ f(o) for o in [0,1,2] ] works too.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,754
Messages
2,569,522
Members
44,995
Latest member
PinupduzSap

Latest Threads

Top