Python Lambda Functions

Python Lambda Functions

Lambda expressions are a way to quickly create anonymous functions in Python. An anonymous function is like a one time use function that doesn’t have a name. You simply use it one time and then move on in the program. Lambda functions are typically used in combination with map() and filter(). The lambda function approach makes it convenient to quickly define a function in a shorthand form that can be used with these functions. In this tutorial, we’ll cover several examples of how to define a lambda function in Python, and how to make use of them efficiently.


From Function To Lambda

A Lambda Function is simply a shorthand version of a regular Python function. So to better understand how to make a lambda function in Python, we can convert a regular function to a lambda function in a step by step fashion. First, let’s look at a simple example of a standard Python function.

def plus_one(num):
    result = num + 1
    return result
plus_one(7)
8

Removing the result variable

Rather than taking the num variable, adding one, then storing it in the result, we can simply return that calculation.

def plus_one(num):
    return num + 1
plus_one(7)
8

Making the function a one-liner

Now we can simplify the function further by having the calculation all on one line.

def plus_one(num): return num + 1
plus_one(7)
8

Remove the def keyword

Here we remove the def keyword along with the name and paranthesis we had assigned to our function (def plus_one()).

num: return num + 1

Remove the return keyword

Lambda functions do not have a return statement since it is implied with any lambda function.

num: num + 1

Add the lambda keyword

Lastly, we can add the lambda keyword in front of the stripped-down expression, and voila! We have a lambda function.

lambda num: num + 1

Assigning a Lambda to a variable

To make use of the lambda function, you often will use it in conjunction with other functions like map() or filter(). It is also commonly used with the reduce() function. We’ll look at that in a little bit. The first way you can use that lambda however is to simply assign it to a variable, and then use that variable as a function. Let’s see how that works.

plus_one = lambda num: num + 1
plus_one(7)
8

Using a lambda function with map()

The first argument to the map() function is always a function itself. It is referred to as a transformation function. Here is an example of a lambda with map().

nums = [1, 2, 3, 4, 5]

result = map(lambda x: x * 2, nums)

print(list(result))
[2, 4, 6, 8, 10]

Using a lambda function with filter()

The filter() function creates a list of elements for which a function returns true. It is often used with lambda expressions. Here is an example where we only want the numbers greater than 3.

nums = [1, 2, 3, 4, 5]

result = filter(lambda x: x > 3, nums)

print(list(result))
[4, 5]

Using a lambda function with reduce()

The reduce() function applies a rolling computation to sequential pairs of values in a list. A common example is to sum all of the values in a list, so let’s try that on our simple list of numbers.

from functools import reduce

nums = [1, 2, 3, 4, 5]

result = reduce(lambda x, y: x + y, nums)

print(result)
15

if statement with lambda

Can you use the Python if statement with lambda functions? Why yes you can. Let’s see an example of that.

result = map(lambda str: str.capitalize() if 'a' in str else str, 'abracadabra')

print(list(result))
['A', 'b', 'r', 'A', 'c', 'A', 'd', 'A', 'b', 'r', 'A']

Python Lambda Functions Summary

  • Lambdas are one-line functions.
  • Also known as anonymous functions.
  • Often used when you don’t want to use a function twice in a program.
  • Work just like normal functions and even behave like them.
  • A lambda’s body is a single expression, not a block of statements.
  • Quickly make ad-hoc functions without needing to properly define a function using def.
  • lambda is designed for coding simple functions.
  • A formal def function should be used for larger tasks.