# Functional Python

Try using functional programming and lambda functions (anonymous one line one time usage functions that you need not waste namespace defining) while programming in Python.

It increases efficiency and better represents your code's function.

Eg (random): Calc e^x + 1 for all natural x in [1,10]. Take the values which have an even greatest integer value and find their product.

Step 1: Finding function values

`fvals = [math.e**x + 1 for x in range(1,11)]`

OR

`fvals = map(lambda x: e**x + 1, range(1,11))`

Step 2: Keeping only even values.

`fevenvals = filter(lambda x: int(x)%2==0, fvals)`

Step 3: Go through the list multiplying elements together.

`answer = reduce(lambda x,y: x*y, fevenvals)`

In my opinion, the above is way more elegant, simple and clear than

```
answer = 1.0
for i in xrange(1,11):
t = math.e**i + 1
if int(t)%2==0:
answer*=t
```

#### Written by Suhail Sherif

#### Related protips

#### 2 Responses

What do you mean "One time use" in the context of lambdas? They're first class objects.

@richoh I meant that you need not assign them a variable. So in that case, as anonymous functions, you can't access them after that one line.