Site icon Virtual Maestro

Learning Python Part-24: Recursive function, Lambda Function

Advertisements
Python Recursive Function:

Recursion is the process of defining something in terms of itself. We know that in Python, a function can call other functions. It is even possible for the function to call itself.  These type of construct are termed as recursive functions.
  • Following is an example of recursive function to find the factorial of an integer.
  • Factorial of a number is the product of all the integers from 1 to that number. 
  • For example, the factorial of 6 (denoted as 6!) is 1*2*3*4*5*6 = 720.
  • Example: In this example, factorial() is a recursive functions as it calls itself.
def factorial(x):
      if x == 1:
           return 1
      else:
           return (x * factorial(x-1))

num = 6
print(“The factorial of”, num, “is”, factorial(num))


Advantages of Recursion:
  • Recursive functions make the code look clean and elegant.
  • A complex task can be broken down into simpler sub-problems using recursion.
  • Sequence generation is easier with recursion than using some nested iteration.

Disadvantages of Recursion:

  • Sometimes the logic behind recursion is hard to follow through.
  • Recursive calls are expensive (inefficient) as they take up a lot of memory and time.
  • Recursive functions are hard to debug.

Python Anonymous function (AKA Lambda Function):
In Python, anonymous function is a function that is defined without a name. Python anonymous functions are defined using the lambda keyword. Hence, anonymous functions are also called lambda functions.

Syntax of Lambda Function in python

lambda arguments: expression
  • Lambda functions can have any number of arguments but only one expression. 
  • The expression is evaluated and returned. 
  • Lambda functions can be used wherever function objects are required.
  • Example of Lambda Function in python
double = lambda x: x * 2
print(double(5))                                # Output: 10
  • In the above program, lambda x: x * 2 is the lambda function. 
  • Here x is the argument and x * 2 is the expression that gets evaluated and returned.
  • This function has no name. 
  • It returns a function object which is assigned to the identifier double.

Use of Lambda Function in python:

  • We use lambda functions when we require a nameless function for a short period of time.In Python, we generally use it as an argument to a higher-order function (a function that takes in other functions as arguments). 
  • Lambda functions are used along with built-in functions like filter(), map() etc.

Example:


my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list(filter(lambda x: (x%2 == 0) , my_list))
print(new_list)  

# Output:

[4, 6, 8, 12]
  • The filter() function in Python takes in a function and a list as arguments.
  • The function is called with all the items in the list and a new list is returned which contains items for which the function evaluates to True.
  • Here is an example use of filter() function to filter out only even numbers from a list.
Example use with map():
  • The map() function in Python takes in a function and a list.
  • The function is called with all the items in the list and a new list is returned which contains items returned by that function for each item.
  • Here is an example use of map() function to double all the items in a list.

my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list(map(lambda x: x * 2 , my_list))
print(new_list) à 


# Output: 

[2, 10, 8, 12, 16, 22, 6, 24]
Exit mobile version