Sergey Dorofeev wrote: > 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) [and later] > This code is needed once in a map,
Peter Otten wrote: > Perhaps you like [sin(y)+cos(y) for y in (x*x for x in items)] then. Just wanted to emphasize this suggestion so that it doesn't get lost in the flood of lambda recommendations. If your code really looks like:: map(lambda x: sin(x * x) + cos(x * x), items) you should be using a list comprehension instead. Using map() here is not only more obscure and more verbose, but slower than:: [sin(x * x) + cos(x * x) for x in items] From there, it's a simple nested generator comprehension to pull out the subexpression: [sin(y) + cos(y) for y in (x * x for x in items)] If you aren't yet familiar with list and generator comprehensions, you should take a few minutes to look at some of your uses of map() and filter and see if you can simplify them using comprehensions instead. STeVe -- http://mail.python.org/mailman/listinfo/python-list