Làm Chủ Hàm Ẩn Danh Lambda, Map và Filter trong Python: Tối Ưu Hóa Xử Lý Dữ Liệu

lúc 14:07 20 tháng 8, 2026
6 views
Làm Chủ Hàm Ẩn Danh Lambda, Map và Filter trong Python: Tối Ưu Hóa Xử Lý Dữ Liệu

Chào bạn! Sau khi đã thành thạo cách viết hàm truyền thống bằng từ khóa def, hôm nay chúng ta sẽ bước sang một cấp độ lập trình ngắn gọn và thông minh hơn: Lập trình hàm với Lambda, Map và Filter. Đây là những công cụ cực kỳ sắc bén giúp bạn thu gọn hàng chục dòng code rườm rà thành những câu lệnh một dòng vô cùng tinh tế và hiệu quả.

Hãy cùng khám phá checklist toàn diện dưới đây để nắm trọn bộ ba quyền năng này nhé!

1. Hàm Ẩn Danh Lambda (Anonymous Functions)

Hàm Lambda giúp bạn tạo nhanh một hàm siêu rút gọn trên một dòng lệnh duy nhất mà không cần dùng cấu trúc def truyền thống.

  • Cú pháp một dòng: Nắm vững cấu trúc tối giản: lambda parameters: expression.
  • Không sử dụng từ khóa return: Hiểu rõ hàm Lambda tự động trả về kết quả của biểu thức (expression) nằm ngay phía sau dấu hai chấm. Nếu bạn lỡ tay gõ chữ return vào trong lambda, Python sẽ ngay lập tức báo lỗi cú pháp.
  • Giới hạn một biểu thức đơn: Ý thức được rằng hàm Lambda chỉ được phép chứa đúng một biểu thức tính toán duy nhất, không thể chứa các khối lệnh phức tạp hoặc nhiều dòng lệnh rườm rà bên trong.
  • Gán vào biến (Tùy chọn): Biết cách gán một hàm lambda vào một biến để gọi như một hàm bình thường (Ví dụ: square_number = lambda x: x ** 2).

2. Hàm map() (Biến đổi đồng loạt)

Hàm map() dùng để áp dụng cùng một công thức xử lý lên từng phần tử của một danh sách và trả về một tập hợp kết quả mới có độ dài không đổi.

  • Cú pháp 2 tham số: Nhớ quy tắc truyền vào của map(): tham số thứ nhất là hàm xử lý (thường dùng Lambda), tham số thứ hai là danh sách dữ liệu nguồn (Ví dụ: map(lambda_function, data_list)).
  • Bản chất đối tượng trả về (Map Object): Hiểu rằng map() không trực tiếp trả về ngay một List, mà trả về một bộ lặp (map object) để tiết kiệm tối đa bộ nhớ máy tính.
  • Ép kiểu kết quả: Biết cách bọc hàm list() ở ngoài cùng để chuyển đổi kết quả từ dạng map object thành một danh sách thực tế có thể in ra màn hình (Ví dụ: result_list = list(map(...))).

3. Hàm filter() (Sàng lọc dữ liệu)

Hàm filter() dùng để duyệt qua một danh sách và chỉ giữ lại những phần tử thỏa mãn một điều kiện Đúng (True) nào đó.

  • Bản chất của hàm điều kiện: Hiểu rằng hàm xử lý (hoặc Lambda) truyền vào filter() bắt buộc phải trả về giá trị logic Boolean (True hoặc False).
  • Cơ chế giữ/lọc: Nếu phần tử nào làm cho hàm Lambda trả về True, phần tử đó được giữ lại; nếu trả về False, phần tử đó sẽ bị loại bỏ không thương tiếc.
  • Số lượng phần tử thay đổi: Ý thức được rằng danh sách kết quả sau khi qua filter() sẽ có số lượng phần tử bằng hoặc ít hơn danh sách gốc (tuy nhiên giá trị của từng phần tử được giữ nguyên bản, không bị biến đổi như khi dùng map()).
  • Ép kiểu kết quả: Tương tự như map(), bạn luôn nhớ phải dùng hàm list() để chuyển đổi filter object thành một List thực chỉnh chu.

4. Thực Hành Ngay Trên VS Code

Lý thuyết đã thông suốt, giờ là lúc tự tay gõ code để giải quyết 2 bài tập xử lý dữ liệu nâng cao bằng Lambda, Map và Filter:

Bài tập 1: Tăng giá sản phẩm hàng loạt (Price Inflation -> Dùng map)

  • Tạo một danh sách số thực original_prices chứa giá của các sản phẩm (Ví dụ: [10.0, 20.0, 50.0]).
  • Sử dụng hàm map() kết hợp với hàm lambda để tăng tất cả các mức giá lên 10% (Công thức: giá gốc nhân với 1.1).
  • Ép kiểu kết quả về một List và gán vào biến inflated_prices.
  • In biến inflated_prices ra màn hình để nghiệm thu kết quả (Kết quả chuẩn phải ra [11.0, 22.0, 55.0]).

Bài tập 2: Lọc danh sách điểm đủ điều kiện đỗ (Passing Scores -> Dùng filter)

  • Tạo một danh sách số nguyên exam_scores chứa điểm số của các học sinh (Ví dụ: [45, 85, 70, 48, 90]).
  • Sử dụng hàm filter() kết hợp với hàm lambda để lọc ra những điểm số lớn hơn hoặc bằng 50.
  • Ép kiểu kết quả về một List và gán vào biến passing_scores.
  • In biến passing_scores ra màn hình thành công để kiểm tra (Kết quả phải lọc đúng chuẩn còn [85, 70, 90]).

Bạn đã thử nghiệm thành công việc kết hợp Lambda linh hoạt bên trong map() và filter() chưa? Hãy để lại bình luận nếu bạn gặp bất kỳ điểm thú vị nào trong quá trình thực hành nhé!

Bình luận

Đăng nhập để để lại bình luận.
Chưa có bình luận nào cho bài viết này.

Bài viết liên quan