A Beginner’s Guide to Understanding Python Lambda Functions
Pinterest Whatsapp
Advertisement

Lambdas in Python are one of the most useful, important, and interesting features to know about. Unfortunately, they’re also easy to misunderstand and get wrong.

In this article, we’re going to explain everything you need to know about these mysterious functions, how to use them, and why they’re useful.

Before diving into these practical examples, you may wish to set up a Python virtual environment Learn How to Use the Python Virtual Environment Learn How to Use the Python Virtual Environment Whether you are an experienced Python developer, or you are just getting started, learning how to setup a virtual environment is essential for any Python project. Read More . If you don’t even want to do that, then you should at least try these examples with an interactive online Python shell Try Python in Your Browser With These Free Online Interactive Shells Try Python in Your Browser With These Free Online Interactive Shells Whether you're going through these Python examples or reviewing the basics of arrays and lists, you can test the code right in your browser. Here are the best online Python interpreters we've found. Read More .

What’s a Lambda in Python?

A lambda is simply a way to define a function in Python. They are sometimes known as “lambda operators” or “lambda functions”.

If you’ve used Python before, you’ve probably defined your functions using the def keyword, and it’s worked fine for you thus far. So why is there another way to do the same thing?

The difference is that lambda functions are anonymous. Meaning, they are functions that don’t need to be named. They are used to create small, one-off functions in cases where a “real” function would be too big and bulky.

Lambdas return a function object, which can be assigned to a variable. Lambdas can have any number of arguments, but they can only have one expression. You cannot call other functions inside lambdas.

The most common use for lambda functions is in code that requires a simple one-line function, where it would be overkill to write a complete normal function. This is covered in greater detail below, under “What About Map, Filter, and Reduce?”.

How to Use Lambdas in Python

Before looking at a lambda function, let’s look at a super basic function defined the “traditional” way:

def add_five(number):
  return number + 5
 
print(add_five(number=4))

how to use lamba functions in python

This function is very basic, but it serves to illustrates lambdas. Yours may be more complex than this. This function adds five to any number passed to it through the number parameter.

Here’s how it looks as a lambda function:

add_five = lambda number: number + 5 
 
print(add_five(number=4))

how to use lamba functions in python

Rather than using def, the word lambda is used. No brackets are required, but any words following the lambda keyword are created as parameters. The colon is used to separate the parameters and the expression. In this case, the expression is number + 5.

There’s no need to use the return keyword—the lambda does this for you automatically.

Here’s how you’d create a lambda function with two arguments:

add_numbers_and_five = lambda number1, number2: number1 + number2 + 5 
 
print(add_numbers_and_five(number1=4, number2=3))

how to use lamba functions in python

If you’re still unsure as to the point of lambdas, the next section will dive in and help you see the light.

Python Lambdas With Map, Filter, and Reduce

The Python core library has three methods called map, reduce, and filter. These methods are possibly the best reasons to use lambda functions.

The map function expects two arguments: a function and a list. It takes that function and applies it to every element in the list, returning the list of modified elements as a map object. The list function is used to convert the resulting map object back into a list again.

Here’s how to use map without a lambda:

list1 = [2, 4, 6, 8]
print(list1)

def add_five(number):
  return number + 5
 
new_list = list(map(add_five, list1))

print(new_list)

how to use lamba functions in python

This map function is quite handy, but it could be better. the add_five function is passed in as an argument, but what if you don’t want to create a function every time you use map? You can use a lambda instead!

Here’s what that same code looks like, only with the function replaced by a lambda:

list1 = [2, 4, 6, 8]
print(list1)
 
new_list = list(map(lambda x: x + 5, list1))

print(new_list)

how to use lamba functions in python

As you can see, the whole add_five function is no longer required. Instead, the lambda function is used to keep things neat.

With the filter function, the process is much the same. Filter takes a function and applies it to every elemen in a list and created a new list with only the elements that caused the function to return True.

First, without lambdas:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)

def greater_than_ten_func(number):
  if number > 10:
    return True
  else:
    return False

new_numbers = list(filter(greater_than_ten_func, numbers))
 
print(new_numbers)

how to use lamba functions in python

There’s nothing wrong with this code, but it’s getting a bit long. Let’s see how many lines a lambda can remove:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)

new_numbers = list(filter(lambda x: x > 10, numbers))
print(new_numbers)

how to use lamba functions in python

The lambda function has replaced the need for the whole greater_than_ten_func! And it’s done it in five simple words. This is why lambdas are powerful: they reduce clutter for simple tasks.

Finally, let’s look at reduce. Reduce is another cool Python function. It applies a rolling calculation to all items in a list. You could use this to tally up a sum total, or multiply all numbers together:

from functools import reduce

numbers = [10, 20, 30, 40]
print(numbers)

def summer(a, b):
  return a + b
 
result = reduce(summer, numbers)
print(result)

how to use lamba functions in python

This example needs to import reduce from the functools module, but don’t worry, the functools module is part of the Python core library.

The story is very much the same with a lambda, there’s no need for a function:

from functools import reduce

numbers = [10, 20, 30, 40]
print(numbers)
 
result = reduce(lambda a, b: a + b, numbers)
print(result)

how to use lamba functions in python

Things to Watch Out For With Python Lambdas

These examples have shown just how easy lambda functions are, along with map, filter, and reduce, from the Python core library. Still, there are a few uses where lambda functions don’t help.

If you’re doing anything more than a basic task, or want to call other methods, use a normal function. Lambdas are great for one off, anonymous functions, but they must only have a single expression. If your lambda starts looking like a regular expression, then it’s probably time to refactor in to a dedicated method.

For more tips, check our guide to object-oriented programming in Python A Beginner's Guide to Python Object-Oriented Programming A Beginner's Guide to Python Object-Oriented Programming To take full advantage of Python's strengths, you'll want to learn how Python works with object-oriented programming (OOP). Read More and check out our FAQ guide for Python beginners The Most Frequently Asked Questions About Python Programming The Most Frequently Asked Questions About Python Programming In this article, we'll walk you through everything you need to know about Python as a beginner. Read More .

Enjoyed this article? Stay informed by joining our newsletter!

Enter your Email

Leave a Reply

Your email address will not be published. Required fields are marked *

  1. James Howde
    June 27, 2018 at 10:30 am

    Thanks for the article.

    Lambda functions look to be something so well known to people who use Python as to not need explaining.

    As somebody who comes across Python, rather than using it; I had a fuzzy idea about them but this simple explanation was very useful.

  2. Zach
    June 26, 2018 at 6:55 pm

    You should not use lambda functions unless you cannot find another way to solve the problem. They lack true docstrings and often only end up obfuscating your code for the next developer down the line.