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
⇑