subexpressions

Sergey Dorofeev sergey at fidoman.ru
Fri Jun 1 05:39:52 EDT 2007


"Peter Otten" <__peter__ at web.de> wrote in message 
news:f3oo0p$c7c$03$1 at news.t-online.com...
>>>> Please help, is there way to use sub-expressions in lambda?
>>>> For example, if I want to calculate sin(x^2)+cos(x^2) I must code:
>>>> lambda x: sin(x*x)+cos(x*x)
>>>> How to make x*x to be evaluated once?
>>>
>>>>>> (lambda x: [sin(x2) + cos(x2) for x2 in [x*x]][0])(.5) == sin(.5*.5) 
>>>>>> +
>>> cos(.5*.5)
>>> True
>>>
>>> The real answer is of course: Use a function.
>>
>> But what about something like
>>
>> lambda x: sin(y)+cos(y) where y=x*x
>>
>> ?
>> May be this could be a PEP? If there is no straight way to do this.
>
> def f(x):
>    y = x*x
>    return sin(y) + cos(y)
>
> What is not straightforward about that?

This code is needed once in a map, so I don't want 3+ extra lines.
Solution seemed so simple...
I always considered python as languague, where simple things do not require 
extensive coding.
Moreover, this construction is common thing in functional programming. 





More information about the Python-list mailing list