In this article we will discuss how to use if , else if and else in a lambda functions in  Python. Will also explain how to use conditional lambda function with filter() in python.

Using if else in Lambda function

Using if else in lambda function is little tricky, the syntax is as follows,

lambda <arguments> : <Return Value if condition is True> if <condition> else <Return Value if condition is False>

For example let’s create a lambda function to check if given value is between 10 to 20 i.e.
lambda x : True if (x > 10 and x < 20) else False

Here we are using if else in a lambda function, if given value is between 10 to 20 then it will return True else it will return False. Now let’s use this function to check some values i.e.
# Lambda function to check if a given vaue is from 10 to 20.
test = lambda x : True if (x > 10 and x < 20) else False

# Check if given numbers are in range using lambda function
print(test(12))
print(test(3))
print(test(24))

Output:
True
False
False

Creating conditional lambda function without if else

Well using ‘if’ ‘else’ keywords makes things easy to understand, but in lambda we can avoid using if & else keywords and still achieve same results. For example let’s modify the above created lambda function by removing if else keywords & also True False i.e.

lambda x : x > 10 and x < 20

This lambda function does the same stuff as above i..e checks if given number lies between 10 to 20. Now let’s use this function to check some values i.e.
# Lambda function to check if a given vaue is from 10 to 20.
check = lambda x : x > 10 and x < 20

# Check if given numbers are in range using lambda function
print(check(12))
print(check(3))
print(check(24))

Output:
True
False
False

Using filter() function with a conditional lambda function (with if else)

filter() function accepts a callback() function and a list of elements. It iterates over all elements in list and calls the given callback() function
on each element. If callback() returns True then it appends that element in the new list. In the end it returns a new list of filtered elements only.

Suppose we have a list of numbers i.e.

# List of numbers
listofNum = [1,3,33,12,34,56,11,19,21,34,15]

Now let’s use filter() function to filter numbers between 10 to 20 only by passing a conditional lambda function (with if else) to it i.e.
# Filter list of numbers by keeping numbers from 10 to 20 in the list only
listofNum = list(filter(lambda x : x > 10 and x < 20, listofNum))
print('Filtered List : ', listofNum)

Output:
Filtered List :  [12, 11, 19, 15]

it uses the passed lambda function to filter elements and in the end returns list of elements that lies between 10 to 20,

Using if, elif & else in a lambda function

Till now we have seen how to use if else in a lambda function but there might be cases when we need to check multiple conditions in a lambda function. Like we need to use if , else if & else in a lambda function. We can not directly use elseif in a lambda function. But we can achieve the same effect using if else & brackets i.e.

lambda <args> : <return Value> if <condition > ( <return value > if <condition> else <return value>)

Let’s see how to do that,

Create a lambda function that accepts a number and returns a new number based on this logic,

  • If the given value is less than 10 then return by multiplying it by 2
  • else if it’s between 10 to 20 then return multiplying it by 3
  • else returns the same un-modified value

# Lambda function with if, elif & else i.e.
# If the given value is less than 10 then Multiplies it by 2
# else if it's between 10 to 20 the multiplies it by 3
# else returns the unmodified same value
converter = lambda x : x*2 if x < 10 else (x*3 if x < 20 else x)

Let’s use this lambda function,
print('convert 5 to : ', converter(5))
print('convert 13 to : ', converter(13))
print('convert 23 to : ', converter(23))

Output:
convert 5 to :  10
convert 13 to :  39
convert 23 to :  23

Complete example is as follows,
def main():
    print('*** Using if else in Lambda function ***')
    # Lambda function to check if a given vaue is from 10 to 20.
    test = lambda x : True if (x > 10 and x < 20) else False

    # Check if given numbers are in range using lambda function
    print(test(12))
    print(test(3))
    print(test(24))

    print('*** Creating conditional lambda function without if else ***')

    # Lambda function to check if a given vaue is from 10 to 20.
    check = lambda x : x > 10 and x < 20

    # Check if given numbers are in range using lambda function
    print(check(12))
    print(check(3))
    print(check(24))

    print('*** Using filter() function with a conditional lambda function (with if else) ***')

    # List of numbers
    listofNum = [1,3,33,12,34,56,11,19,21,34,15]
    print('Original List : ', listofNum)

    # Filter list of numbers by keeping numbers from 10 to 20 in the list only
    listofNum = list(filter(lambda x : x > 10 and x < 20, listofNum))
    print('Filtered List : ', listofNum)

    print('*** Using if, elif & else in Lambda function ***')

    # Lambda function with if, elif & else i.e.
    # If the given value is less than 10 then Multiplies it by 2
    # else if it's between 10 to 20 the multiplies it by 3
    # else returns the unmodified same value
    converter = lambda x : x*2 if x < 10 else (x*3 if x < 20 else x)

    print('convert 5 to : ', converter(5))
    print('convert 13 to : ', converter(13))
    print('convert 23 to : ', converter(23))

if __name__ == '__main__':
    main()


Output:
*** Using if else in Lambda function ***
True
False
False
*** Creating conditional lambda function without if else ***
True
False
False
*** Using filter() function with a conditional lambda function (with if else) ***
Original List :  [1, 3, 33, 12, 34, 56, 11, 19, 21, 34, 15]
Filtered List :  [12, 11, 19, 15]
*** Using if, elif & else in Lambda function ***
convert 5 to :  10
convert 13 to :  39
convert 23 to :  23

Join a list of 2000+ Programmers for latest Tips & Tutorials