# Lambda Functions¶

Let us recap details related to lambda functions.

We can develop functions with out names. They are called Lambda Functions and also known as Anonymous Functions.

They are quite extensively used as part of functions such as map, reduce, sort, sorted etc.

We typically use them to pass as arguments to higher order functions which takes functions as arguments

## Tasks¶

Let us perform few tasks related to lambda functions.

Create a generic function mySum which is supposed to perform arithmetic using integers within a range.

It takes 3 arguments -

`lb`

,`ub`

and`f`

.Function f should be invoked inside the function on each element within the range.

```
def mySum(lb, ub, f):
total = 0
for e in range(lb, ub + 1):
total += f(e)
return total
```

Sum of integers between lower bound and upper bound using

`mySum`

.

```
def get_i(i):
return i
```

```
mySum(2, 4, lambda i: i)
```

```
9
```

```
mySum(2, 4, get_i)
```

```
9
```

Sum of squares of integers between lower bound and upper bound using

`mySum`

.

```
mySum(2, 4, lambda i: i * i)
```

```
29
```

```
def sqr(i): return i * i
```

```
mySum(2, 4, sqr)
```

```
29
```

Sum of the even numbers between lower bound and upper bound using

`mySum`

.

```
mySum(2, 4, lambda i: i if i%2 == 0 else 0)
```

```
6
```

```
def even(i): return i if i % 2 == 0 else 0
```

```
mySum(2, 4, even)
```

```
6
```

Sort the list of tuples in descending order by 2nd elements with in the tuples

```
salaries = [
(1, 1000.0),
(2, 1800.0),
(3, 1500.0),
(4, 750.0)
]
```

```
type(salaries)
```

```
list
```

```
type(salaries[0])
```

```
tuple
```

```
sorted?
```

```
Signature: sorted(iterable, /, *, key=None, reverse=False)
Docstring:
Return a new list containing all items from the iterable in ascending order.
A custom key function can be supplied to customize the sort order, and the
reverse flag can be set to request the result in descending order.
Type: builtin_function_or_method
```

```
sorted(salaries)
```

```
[(1, 1000.0), (2, 1800.0), (3, 1500.0), (4, 750.0)]
```

```
sorted(salaries, reverse=True)
```

```
[(4, 750.0), (3, 1500.0), (2, 1800.0), (1, 1000.0)]
```

```
t = (1, 1000.0)
```

```
type(t)
```

```
tuple
```

```
t[1]
```

```
1000.0
```

```
sorted(salaries, key=lambda sal: sal[1])
```

```
[(2, 1800.0), (3, 1500.0), (1, 1000.0), (4, 750.0)]
```

```
sorted(salaries, key=lambda sal: sal[1], reverse=True)
```

```
[(2, 1800.0), (3, 1500.0), (1, 1000.0), (4, 750.0)]
```

```
for sal in sorted(salaries, key=lambda sal: sal[1], reverse=True):
print(sal)
```

```
(2, 1800.0)
(3, 1500.0)
(1, 1000.0)
(4, 750.0)
```