Introduction:
Python, with its elegance and simplicity, introduces lambda functions as a powerful tool for creating concise, anonymous functions. These one-liners defined with the lambda
keyword are ideal for short-lived or single-use scenarios, often acting as parameters for higher-order functions like map(),
filter()
, and reduce()
. In this blog, we'll explore the beauty and utility of lambda functions through examples and practical use cases.
The Basics: Creating and Using Lambda Functions
Lambda functions follow a simple syntax: lambda arguments: expression
. Let's start with the basics by creating lambda functions for common operations.
# Example 1: Adding 10 to the input argument
add_ten = lambda x: x + 10
val1 = add_ten(5)
val2 = add_ten(100)
print(val1, val2)
# Example 2: Multiplying two input arguments
multiply = lambda x, y: x * y
val3 = multiply(2, 10)
val4 = multiply(7, 5)
print(val3, val4)
The output will be:
15 110
20 35
Lambda Functions in Functions: A Dynamic Approach
Lambda functions shine when used within other functions, providing a dynamic way to create variations based on different parameters.
def myfunc(n):
return lambda x: x * n
doubler = myfunc(2)
print(doubler(6)) # Output: 12
tripler = myfunc(3)
print(tripler(6)) # Output: 18
Custom Sorting: Lambda as a Key Parameter
Lambda functions find extensive use in custom sorting, allowing the transformation of elements before sorting.
points2D = [(1, 9), (4, 1), (5, -3), (10, 2)]
sorted_by_y = sorted(points2D, key=lambda x: x[1])
print(sorted_by_y)
mylist = [-1, -4, -2, -3, 1, 2, 3, 4]
sorted_by_abs = sorted(mylist, key=lambda x: abs(x))
print(sorted_by_abs)
The output will be:
[(5, -3), (4, 1), (10, 2), (1, 9)]
[-1, 1, -2, 2, -3, 3, -4, 4]
Lambda with Map and Filter: Conciseness and Efficiency
Lambda functions pair seamlessly with map()
and filter()
, providing concise alternatives for element transformations and filtering.
a = [1, 2, 3, 4, 5, 6]
b = list(map(lambda x: x * 2, a))
c = [x * 2 for x in a] # Prefer list comprehension if possible
print(b) # Output: [2, 4, 6, 8, 10, 12]
print(c) # Output: [2, 4, 6, 8, 10, 12]
a = [1, 2, 3, 4, 5, 6, 7, 8]
b = list(filter(lambda x: x % 2 == 0, a))
c = [x for x in a if x % 2 == 0] # Achievable with list comprehension
print(b) # Output: [2, 4, 6, 8]
print(c) # Output: [2, 4, 6, 8]
Reduce: Lambda in Action for Aggregation
The reduce()
function, combined with lambda, is a powerful tool for aggregating values.
from functools import reduce
a = [1, 2, 3, 4]
product_a = reduce(lambda x, y: x * y, a)
sum_a = reduce(lambda x, y: x + y, a)
print(product_a) # Output: 24
print(sum_a) # Output: 10
Conclusion:
Lambda functions in Python, though succinct, wield immense power. From basic arithmetic operations to dynamic function creation and custom sorting, these one-liners enhance code readability and maintainability. Embrace the simplicity and elegance of lambda functions, leveraging their capabilities in various scenarios for a more expressive and efficient coding experience.