Lambda và các hàm map, filter, reduce là công cụ của phong cách lập trình hàm (functional). Chúng giúp viết những phép biến đổi dữ liệu ngắn gọn.
Hàm lambda — hàm ẩn danh
# Hàm thường
def binh_phuong(x):
return x * x
# Tương đương bằng lambda
binh_phuong = lambda x: x * x
cong = lambda a, b: a + b
Lambda phù hợp cho những hàm nhỏ, dùng một lần — thường làm tham số cho hàm khác.
map — biến đổi từng phần tử
so = [1, 2, 3, 4]
binh_phuong = list(map(lambda x: x*x, so)) # [1, 4, 9, 16]
filter — lọc phần tử
chan = list(filter(lambda x: x % 2 == 0, so)) # [2, 4]
reduce — gộp về một giá trị
from functools import reduce
tich = reduce(lambda a, b: a*b, so) # 24
map/filter hay comprehension?
Trong Python, list comprehension thường được ưa chuộng hơn vì dễ đọc:
binh_phuong = [x*x for x in so] # thay map
chan = [x for x in so if x % 2 == 0] # thay filter
Dùng lambda khi nào?
Lambda tỏa sáng khi làm tham số nhanh, ví dụ sắp xếp theo tiêu chí:
nguoi = [("An", 25), ("Bình", 20)]
nguoi.sort(key=lambda x: x[1]) # sắp theo tuổi
Hiểu các công cụ này giúp bạn đọc được code của người khác và chọn cách viết phù hợp nhất cho từng tình huống.
