1. Hàm lamda trong Python là gì?
Hàm lambda là một hàm không có tên hàm. Hàm lambda còn được gọi là hàm ẩn danh (anonymous function). Python sử dụng từ khóa lambda để định nghĩa một hàm lambda. Cú pháp:
lambda arguments: expression
Hàm lambda có thể có số lượng tham số bất kỳ nhưng chỉ có một biểu thức. Biểu thức được tính toán, đánh giá rồi trả kết quả về. Các hàm lambda có thể được sử dụng ở bất cứ nơi nào được yêu cầu. Ví dụ:
# lambda function
double = lambda x: x * 2
print(double(5))
x ="Gochocit.com"
# lambda function gets pass to print
y = lambda x : print(x)
y(x)
Kết quả
10
Gochocit.com
2. Sử dụng hàm lambda trong Python
Hàm lambda thường được sử dụng trong một hàm khác để giúp thực hiện một công việc nào đó. Ngoài ra, hàm lambda còn thường được sử dụng làm đối số cho một hàm khác như filter()
, map()
,…
Hàm lambda thường sử dụng bên trong một hàm
def power(n):
return lambda a : a ** n
# set n = 2
# base = lambda a : a**2
# returned to base
base = power(2)
print("8 powerof 2 = ", base(8))
base = power(5)
print("8 powerof 5 = ", base(8))
Kết quả
8 powerof 2 = 64
8 powerof 5 = 32768
Hàm lambda được sử dụng với hàm filter()
Hàm filter()
trong Python nhận một hàm và một danh sách (list) làm đối số. Hàm filter()
lần lượt duyệt qua tất cả các phần tử (item) trong list và lọc ra các phần tử thỏa một điều kiện nào đó.
# numbers list
numbers = [1, 5, 4, 6, 8, 11, 3, 12]
# filter out only the even items from numbers list
new_numbers = list(filter(lambda x: (x%2 == 0) , numbers))
print(new_numbers)
Kết quả
[4, 6, 8, 12]
Trong ví dụ trên, hàm filter()
giúp lọc các số chẵn từ một danh sách.
Hàm lambda được sử dụng với hàm map()
Hàm map()
trong Python nhận một hàm và một danh sách (list) làm đối số. Hàm map()
lần lượt duyệt qua từng phần tử (item) trong list. Trong lúc duyệt, hàm map()
sẽ thực hiện tính toán trên từng phần tử nhờ đối số là hàm rồi trả về một list mới với các item được tính toán.
# numbers list
numbers = [1, 5, 4, 6, 8, 11, 3, 12]
# double each item in numbers list using map()
new_numbers = list(map(lambda x: x * 2 , numbers))
print(new_numbers)
Kết quả
[2, 10, 8, 12, 16, 22, 6, 24]
Trong ví dụ trên, hàm map()
giúp nhân đôi tất cả các item trong một danh sách.