Lambda và các hàm map, filter, reduce trong Python

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.

Lên đầu trang