## Implementing complex logic in lambda expressions. Condition check. Using lambda expressions for sequences. Functions map(), filter(), reduce()

### Contents

- 1. How do I provide a condition check in a lambda expression? Example
- 2. Applying lambda expressions to sequences. Function map(). Examples
- 3. Receiving data in sequence. The filter() function. Examples
- 4. Processing the sequences. Using a lambda expression in the reduce() function. Example
- Related topics

**Search other resources:**

##### 1. How do I provide a condition check in a lambda expression? Example

As you know, in a lambda expression it is impossible to use the if statement in its normal form. However, a lambda expression can use a conditional operator, which has the following general form

result1 if condition else result2

here

- condition – conditional expression;
- result1 – the result that is returned if condition = true;
- result2 – the result that is returned if condition = false.

**Example.** The code for lambda expressions that return the maximum and minimum values between two input objects is demonstrated.

# Checking a condition in a lambda expression # Calculating the maximum value between two numbers maximum = (lambda a, b: a if a>b else b) print(maximum(15, 13)) # Minimum value between three numbers a, b, c min = (lambda a, b, c: a if (a<=b)and(b<=c) else (b if (b<=a)and(b<=c) else c)) print(min(9,8,5))

The result of the program

15 5

### ⇑

##### 2. Applying lambda expressions to sequences. Function map(). Examples

If you need to cycle through a sequence (list, tuple) inside a lambda expression, then it makes sense to use the map() function

`map(func, *iterables)`

here

- func – function to be applied to each element of the iterables sequence;
- iterables – an iterated object that is a sequence (for example list).

The function returns a list containing the results of all the function func() calls.

**Example 1.** Use the map() function to receive a new list in which each element is doubled. Demonstrate how the function works for two cases:

- without using a lambda expression;
- using lambda expression.

# Using lambda expressions to process sequences # Task. Multiply each element of the sequence by 2. # Use lambda expression and function map() # 1. Declare a function that multiplies a number by 2 def Mult2(t): return t*2 # 2. The list under test. L = [ 2, 8, 12, -5, -10 ] # 3. Apply map() function without lambda expression based on function Mult2() L2 = list(map(Mult2, L)) print("L2 = ", L2) # 4. Apply map() function with lambda expression L3 = list(map((lambda t: t*2), L)) print("L3 = ", L3)

The result of the program

L2 = [4, 16, 24, -10, -20] L3 = [4, 16, 24, -10, -20]

**Example 2.** The example demonstrates applying the map() function and a lambda expression to a tuple. Each element of the tuple is converted to an integer.

# Using lambda expressions to process sequences # Using a lambda expression and map() function to a tuple # 1. Declare a test tuple T = ( 2.88, -1.75, 100.55 ) # 2. Get a new tuple in which the elements of the sequence are cast # to an integer type T2 = tuple(map((lambda x: int(x)), T)) # 3. Print the result print("T2 = ", T2) # T2 = (2, -1, 100)

The result of the program

T2 = (2, -1, 100)

### ⇑

##### 3. Receiving data in sequence. The filter() function. Examples

The filter() function is used to fetch data from a sequence. General form of function

`filter(func or None, iterable)`

here

- func – the name of the function to apply to the iterable object;
- iterable – an iterated object (list, tuple).

The function returns the filtered object.

**Example 1.** For a given tuple of strings, a new tuple is formed that contains strings of 3 characters long.

# Using lambda expressions to process a sequence # Using a lambda expression and the filter() function on a tuple # 1. Declare a test tuple T = ( 'abcd', 'abc', 'cdefg', 'def', 'ghi' ) # 2. Get a new tuple that implements strings of length 3 characters T2 = tuple(filter((lambda s: len(s)==3), T)) # 3. Print the result print("T2 = ", T2) # T2 = ('abc', 'def', 'ghi')

The result of the program

T2 = ('abc', 'def', 'ghi')

**Example 2.** For a given list of numbers, numbers from the range [10; 20] are formed. The filter() function is demonstrated for a function and lambda-expression.

# Processing of sequences in lambda expressions # The use of lambda expressions and function filter() for a list # 1. Declare a testable list L = [ 8, 15, 7, 3, 11, 23, 187, -5, 20, 17 ] # 2. Use a lambda expression to solve a problem L2 = list(filter((lambda t: (t>=10)and(t<=20)), L)) print("L2 = ", L2) # L2 = [15, 11, 20, 17] # 3. Use a function to solve task def Range_10_20(t): return (t>=10)and(t<=20) L3 = list(filter(Range_10_20, L)) print("L3 = ", L3)

The result of the program

L2 = [15, 11, 20, 17] L3 = [15, 11, 20, 17]

### ⇑

##### 4. Processing the sequences. Using a lambda expression in the reduce() function. Example

The reduce() function allows you to get an object that is the result of some operation on a sequence (for example, the sum of the elements of a sequence). The reduce() function can be used for both functions and lambda expressions.

The general form of a function declaration is as follows

reduce(func, sequence)

here

- func – a function or lambda expression that specifies a formula for calculating two adjacent elements;
- sequence – processed sequence.

The reduce() function returns an object that is the result of processing.

**Example.** The example demonstrates using the reduce() function to calculate the sum of the elements of a sequence. To obtain a calculation formula, a lambda expression and an additional function are used.

# Using lambda expressions to process sequences import functools # Using lambda expression in reduce() function # 1. Declare a testable list L = [ 1.88, 3, 2.4, 3.6, 4.8 ] # 2. Calculate the sum of the elements of a list using a lambda expression summ1 = functools.reduce((lambda a, b: a+b), L) print("summ1 = ", summ1) # 3. Declare a function and use it in reduce() function def Add(x, y): return x+y summ2 = functools.reduce(Add, L) print("summ2 = ", summ2)

The result of the program

summ1 = 15.68 summ2 = 15.68

### ⇑

### Related topics

- Lambda expressions. Anonymous functions. The lambda keyword. Transition table
- Default arguments in lambda-expressions. Lambda-expressions in the body of enclosing function. Nested lambda-expressions

### ⇑