# Lambda function of Python

The art and Tao of Python Programming: an introduction to Python language
Link to the video course "the art and Tao of Python Programming: an introduction to Python language": https://edu.csdn.net/course/detail/27845

# Lambda function

Lambda function is an in-line function without a name. It is often called an anonymous function.

The function of lambda function is exactly the same as that of ordinary functions, except that lambda contains only one expression ## Basic Example

```def doubler(x):
return x*2

print(doubler(2))    # 4
print(doubler(5))    # 10
```
```4
10
```

You can use the lambda function to get the same result.

```doubler = lambda x: x*2

print(doubler(2))    # 4
print(doubler(5))    # 10
```
```4
10
```

## Multiple parameters

You can send any number of arguments to the lambda function. Just separate them with commas.

Example: lambda function that multiplies two values

```mul = lambda x, y: x*y
print(mul(2, 5))
```
```10
```

Example: a lambda function that adds three values

```add = lambda x, y, z: x+y+z
```
```17
```

## Default parameter value

You can specify default values for parameters.

When you call a lambda function without parameters, it uses the default value.

Example: lambda function that increments the value by 1 by default

```incrementer = lambda x, y=1: x+y
print(incrementer(5, 3))
```
```8
```
```# using default
print(incrementer(5))
```
```6
```

## Return multiple values

To return multiple values, package them in a tuple.

Multiple assignments are then used to unpack the parts of the tuple returned by the package.

Example: return multiple values by packaging them into a tuple

```findSquareCube = lambda num: (num**2, num**3)
print(type(findSquareCube))
x, y = findSquareCube(2)
print(x)
print(y)
```
```<class 'function'>
4
8
```

## if else in a Lambda

To implement selection logic in lambda, you can use an if else ternary expression.

Example: lambda function that returns the smallest element

```findMin = lambda x, y: x if x < y else y

print(findMin(2, 4))      # 2
print(findMin('a', 'x'))  # a
```
```2
a
```

## List derivation in Lambda

You can use list derivation in lambda functions.

Example: flattening a nested list using lambda

```flatten = lambda l: [item for sublist in l for item in sublist]

L = [[1, 2, 3], [4, 5, 6], , [8, 9]]
print(flatten(L)) # [1, 2, 3, 4, 5, 6, 7, 8, 9]

L = [['a', 'b', 'c'], ['d', 'e']]
print(flatten(L)) # ['a', 'b', 'c', 'd', 'e']
```
```[1, 2, 3, 4, 5, 6, 7, 8, 9]
['a', 'b', 'c', 'd', 'e']
```

## Sorting with lambda

The Lambda function can be used with the sorted() function to sort iteratable objects.

Example: sort students by age

```L = [('Sam', 35),
('Max', 25),
('Bob', 30)]
x = sorted(L, key=lambda student: student)
print(x) # [('Max', 25), ('Bob', 30), ('Sam', 35)]
```
```[('Max', 25), ('Bob', 30), ('Sam', 35)]
```

## Nested Lambdas

Like ordinary functions, lambda can also be nested.

Example: nested Lambda

```multiplier = (lambda x: (lambda y: x*2 + y))

doubler = multiplier(2)

print(doubler(10))    # 14

tripler = multiplier(3)
print(tripler(10))    # 16
```
```14
16
```

## Jump Tables

lambda is also commonly used to implement jump tables.

A jump table is a list or dictionary of functions to be called on demand.

Example: create a jump table for square sum and cube operations in python

```# dictionary of functions
exponent = {'square':lambda x: x ** 2,
'cube':lambda x: x ** 3}

print(exponent['square'](3))    # 9
print(exponent['cube'](3))      # 27
# list of functions
exponent = [lambda x: x ** 2,
lambda x: x ** 3]

print(exponent(3))   # 9
print(exponent(3))   # 27
```
```9
27
9
27
```

Keywords: Python Back-end

Added by deano2010 on Sun, 20 Feb 2022 15:54:40 +0200