using lambda to print everything in a list
Alex Martelli
aleaxit at yahoo.com
Fri Apr 27 04:17:28 EDT 2001
"Jeff Shipman" <shippy at nmt.edu> wrote in message
news:3AE8BCA9.386446CD at nmt.edu...
> I've started to discover the real handiness with
> lambda expressions in python. I would like to
Maybe one day you'll explain it to me as well...?
My personal impression is that lambda is a (minor)
nuisance. Naming the code fragment that you want
to pass to some other function, by making it a
nested function, seems clearer & handier to me.
> print out each string in a list without having
> a for loop and I thought this was the perfect
> candidate for lambda. This is what I'm doing:
>
> map(lambda x: print x, ['line one', 'line two'])
>
> and I get the following error:
>
> File "<stdin>", line 1
> map(lambda x: print x, ['line one', 'line two'])
> ^
> SyntaxError: invalid syntax
...because, as I see others have explained, 'print'
is a statement. lambda only takes an expression.
To use statements, you have to write a function then
pass it -- the only "cost" (is it a cost?-) is to
give that nested local function a name. So, as
already seen in another post:
def emit(x): print x
map(emit, ['line one', 'line two'])
> I can do it fine with things like string.replace, but
> for some reason does it not like built-in functions?
Functions are fine for map, statements aren't.
> Is there a way to do what I'm wanting to do? Or must
> I use a for loop?
A simple loop would probably be clearer, but a named
function will let you use map() if you insist:-).
Alex
More information about the Python-list
mailing list