🎯 Mục Tiêu
- Giải mã Lambda – một trong những tính năng “kén người dùng” nhất của Python.
- Cách viết và sử dụng các “Hàm chớp nhoáng” không cần đặt tên.
- Ứng dụng thực tế của Lambda khi đi kèm với bộ 3 nguyên tử:
map(),filter(), vàsorted()/sort(). - Nhận biết giới hạn của Lambda để không lạm dụng gây “mù Code”.
Lambda Function là gì?
Ở Bài 13, bạn tạo một Hàm bằng chữ def, đặt tên cho nó (VD: calculate_tax), xuống dòng lùi lề và dùng lệnh return. Nếu hàm đó rất ngắn, cực kỳ đơn giản và bạn chỉ dùng đúng 1 lần trong cả dự án, việc tốn tận 2-3 dòng code để khai sinh ra nó có vẻ lãng phí. Lambda ra đời để giúp bạn gõ ra 1 cái Hàm ngay gọn lỏn trên 1 Dòng duy nhất, và Hàm này Không Cần Tên (Ẩn Danh).
Cú pháp cốt lõi:
lambda tham_số: công_thức_trả_về
Ví dụ Phân Tích:
# CODE CŨ (Dài dòng)
def square(x):
return x * x
# CODE LAMBDA (1 DÒNG DUY NHẤT)
# Cắt bỏ 'def', bỏ tên, lấy Parameters (x) đặt trước dấu hai chấm, và Biểu Thức Tính Toán ở sau dấu hai chấm.
square_lambda = lambda x: x * x
print(square_lambda(5)) # Output: 25
Sự Kết hợp Hoàn Hảo của Lambda
Sức mạnh thực sự của Lambda không phải đứng một mình, mà là đi làm Đối Số Chèn (Argument) cho những hàm chức năng hệ thống yêu cầu bạn phải cung cấp 1 công thức mini.
Tuyệt chiêu 1: Sắp xếp Tuỳ Biến với sorted()
Thường bạn dùng sort() để chải mảng [5, 2, 7] thành [2, 5, 7]. Nhưng nếu mỗi toa là 1 cái Tuple / List con thì sao?
points = [(1, 2), (3, 1), (5, -1)]
# Yêu cầu: "Sắp xếp mảng này không dựa theo số đầu, mà dựa vào Đứa thứ 2 trong Tuple"
# Ta truyển lambda vào keyword key=
sorted_points = sorted(points, key=lambda p: p[1])
# Hàm dịch: Lấy từng tuple quăng vào biến p -> Dò vị trí index p[1] -> Sắp Lại!
print(sorted_points) # Bất ngờ chưa: [(5, -1), (3, 1), (1, 2)] (vì -1 < 1 < 2)
Tuyệt chiêu 2: Bộ Lọc filter()
Rây bột lọc lấy những thứ đạt chuẩn dựa vào điều kiện True/False.
numbers = [1, 2, 3, 4, 5, 6, 7]
# Yêu cầu: Lọc vớt toàn bộ số chẵn
evens = list(filter(lambda x: x % 2 == 0, numbers))
# Hàm filter() quăng từng số vào x, cái nào ra True thì Nhặt.
# Phải bọc chữ list() bên ngoài vì kết quả filter là 1 gói quà ngầm.
print(evens) # [2, 4, 6]
Tuyệt chiêu 3: Biến Bức map()
Nhân bản áp dụng 1 phép tính lên toàn bộ Danh sách cùng lúc.
prices = [10, 20, 30]
# Tăng giá lên gấp đôi toàn bộ
new_prices = list(map(lambda p: p * 2, prices))
print(new_prices) # [20, 40, 60]
💡 Key Takeaways
- Bản chất
lambda a, b: a + bđược dịch ngầm thànhdef(a,b): return a + b. - Tuyệt đối Không dùng Lambda nếu biểu thức của bạn yêu cầu nhiều luồng if-else phức tạp hoặc cần dài quá nửa màn hình. Việc “cố đấm ăn xôi” nhét mọi thứ vào 1 dòng Lambda sẽ làm những người đọc code khác trầm cảm.
- Khi cần Lọc (
filter) hay Biến Đổi 1 thể (map), một đoạn Lambda bé xinh là “Best Practice” cực kỳ ngầu.
➡️ Bài Tiếp Theo Lesson 15 – Modules và Packages

