Skip to main content

Lambda Functions

Updated Oct 30, 2019 ·

Overview

Lambda functions are shorter and don't need a name. They are used for simple tasks where you don’t need to create a full function.

  • Syntax: lambda arguments: expression
  • You can use x for the argument, or any other name.
  • The expression is like the function body.
  • The result is automatically returned.

When to use Lambda:

  • Lambda:
    • Use for simple tasks
    • When the function will only be used once
  • Custom Functions:
    • Use for more complex logic
    • When the function will be reused many times

Using Lambda

If you only need to use the function once, you can directly define and call it with Lambda like this:

(lambda x: function(x))(x)

Example: To calculate the average, use sum(x)/len(x) as the function and pass the argument x.

## Computes the average of multiple values
(lambda x: sum(x)/len(x))([10, 20, 30]) # Output: 20.0

Storing Lambda

You can also store a lambda function in a variable and then call it like a regular function.

Example:

average = lambda x: sum(x) / len(x)
print(average([10, 20, 30])) # Output: 20.0

Multiple Arguments

Lambda functions can take more than one argument.

Example: Raising one number to the power of another.

(lambda x, y: x ** y)(2,3) # Output: 8

Which could also be written as:

power = lambda x, y: x ** y
print(power(2, 3)) # Output: 8

Using Lambda with Iterables

Lambda functions work well with iterables such as lists. They are commonly used with functions like map() to apply an operation to every element, then converted to a list using list().

Example 1: Adding text to each item

Adds "!!!" to every string in the list using a lambda function with map().

spells = ["protego", "accio", "expecto patronum", "legilimens"]

shout_spells = map(lambda x: x + "!!!", spells)
shout_spells_list = list(shout_spells)
print(shout_spells_list)

Output:

['protego!!!', 'accio!!!', 'expecto patronum!!!', 'legilimens!!!'] 

Example 2: Capitalizing each name

Capitalizes the first letter of each name in the list using a lambda function with map().

names = ['alice', 'bob', 'charlie']
capitalized_names = list(map(lambda x: x.capitalize(), names))
print(capitalized_names)

Output:

['Alice', 'Bob', 'Charlie']

Example 3: Filtering long names

Keeps only the names longer than 6 letters from the list using filter() and a lambda function.

fellowship = ['frodo', 'samwise', 'merry', 'pippin', 'aragorn', 'boromir', 'legolas', 'gimli', 'gandalf']

result = filter(lambda name: len(name) > 6, fellowship)
result_list = list(result)

print(result_list)

Output:

['samwise', 'aragorn', 'boromir', 'legolas', 'gandalf']

Example 4: Concatenating all names

Combines all names in the list into a single string using reduce() and a lambda function.

from functools import reduce

stark = ['robb', 'sansa', 'arya', 'brandon', 'rickon']
result = reduce(lambda a, b: a + b, stark)

print(result)

Output:

robbsansaaryabrandonrickon

Calling Lambda In-Line

You can also define the function and print the output in one line.

Example: alculate the tax (20% of the sale price)

sale_price = 29.99

print((lambda x: x * 1.2)(sale_price)) ## Output: 35.988

If sale_price is a list of prices, you can use map to apply the tax calculation to each value, and list to convert the result into a list.

sales_prices = [29.99, 9.95, 14.50, 39.75, 60.00]

add_taxes = map(lambda x: x*1.2, sales_prices)
print(list(add_taxes))

Output:

[35.988, 11.94, 17.4, 47.699999999999996, 72.0]