Lambda Functions in Python
Lambda functions, also known as anonymous functions, are small functions that are defined using the lambda
keyword. Unlike regular functions defined using def
, lambda functions do not have a name and are typically used for short, simple operations that are not going to be reused elsewhere in the code.
Basic Lambda Function
A basic lambda function can take any number of arguments but can only have one expression. The result of this expression is returned automatically:
# Lambda function that adds 10 to the input
add_10 = lambda x: x + 10
print(add_10(5)) # Output: 15
In this example, add_10
is a lambda function that adds 10 to the input value x
.
Lambda with Multiple Arguments
Lambda functions can take multiple arguments, just like regular functions. Here's an example that multiplies two numbers:
# Lambda function that multiplies two numbers
multiply = lambda a, b: a * b
print(multiply(3, 4)) # Output: 12
Here, multiply
is a lambda function that takes two arguments a
and b
and returns their product.
Using Lambda with map()
and filter()
Lambda functions are often used in combination with functions like map()
, filter()
, and reduce()
(from the functools
module). These functions apply a lambda function to each item in an iterable, making them powerful tools for data processing.
Using map()
with Lambda
The map()
function applies a lambda function to each item in an iterable (e.g., a list) and returns a map object (which can be converted to a list):
numbers = [1, 2, 3, 4, 5]
# Double the numbers using map and lambda
doubled = list(map(lambda x: x * 2, numbers))
print(doubled) # Output: [2, 4, 6, 8, 10]
In this example, the lambda function doubles each number in the numbers
list.
Using filter()
with Lambda
The filter()
function filters items in an iterable based on a condition defined by a lambda function and returns a filter object (which can be converted to a list):
# Filter out odd numbers using filter and lambda
odds = list(filter(lambda x: x % 2 != 0, numbers))
print(odds) # Output: [1, 3, 5]
In this example, the lambda function filters out the odd numbers from the numbers
list.
Lambda Functions in Sorting and Other Applications
Lambda functions are also commonly used in sorting operations and other scenarios where a small, throwaway function is required. For example, sorting a list of tuples based on the second element:
pairs = [(1, "one"), (2, "two"), (3, "three"), (4, "four")]
# Sort by the second element (the string) in each tuple
sorted_pairs = sorted(pairs, key=lambda pair: pair[1])
print(sorted_pairs)
# Output: [(4, "four"), (1, "one"), (3, "three"), (2, "two")]
In this example, the lambda function is used to specify that the list should be sorted based on the second element of each tuple.
Limitations of Lambda Functions
Lambda functions are powerful but come with limitations:
- Single Expression: Lambda functions can only contain a single expression. They cannot contain multiple statements or complex logic.
- No Annotations: Lambda functions do not support type annotations, making them less explicit in certain scenarios.
- Limited Reusability: Because lambda functions are typically unnamed (anonymous), they are best suited for short, throwaway functions that are not reused.
Conclusion
Lambda functions in Python are useful for short, simple operations, especially when used in combination with functions like map()
, filter()
, and sorted()
. While they are powerful, their limitations mean that for more complex operations, regular functions defined with def
are often more appropriate.
Import Links
Here are some useful import links for further reading: