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))
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 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
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]