Hướng dẫn python lambda if else

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.

Nội dung chính

  • Using if else in Lambda function
  • Creating conditional lambda function without if else
  • Using filter() function with a conditional lambda function (with if else)
  • Using if, elif & else in a lambda function
  • How do you write if else in lambda function in Python?
  • Can you put an if statement in a lambda?
  • Can you use if statement in lambda Python?
  • Can you use Elif in lambda?

Using if else in Lambda function

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

lambda  :  if  else 

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,

Advertisements

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  :  if  (  if  else )

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

Using if-else in lambda function Here, if block will be returned when the condition is true, and else block will be returned when the condition is false. Here, the lambda function will return statement1 when if the condition is true and return statement2 when if the condition is false.

Use lambda function syntax to use an if statement in a lambda function. Use the syntax lambda input: true_return if condition else false_return to return true_return if condition is True and false_return otherwise. condition can be an expression involving input .

Using if, elif & else in a lambda function We can not directly use elseif in a lambda function.

Technically we cannot use an elif statement in a lambda expression. However, we can nest if else statements within an else statement to achieve the same result as an elif statement.