Filter Python: Lọc Data Chuẩn GenZ, Code Đỉnh Cao!
Python

Filter Python: Lọc Data Chuẩn GenZ, Code Đỉnh Cao!

Author

Admin System

@root

Ngày xuất bản

19 Mar, 2026

Lượt xem

1 Lượt

filter

Filter Python: Lọc Data Chuẩn GenZ, Code Đỉnh Cao!

Chào các dân chơi GenZ của thầy Creyt! Hôm nay, chúng ta sẽ cùng nhau khám phá một 'công cụ' cực xịn sò trong Python, giúp các bạn 'sàng lọc' data một cách thần sầu: đó chính là filter.

1. Filter là gì và để làm gì? (Giải thích chuẩn GenZ)

Tưởng tượng thế này: cuộc đời GenZ chúng ta toàn là thông tin, từ TikTok, Instagram đến các bài assignment. Đôi khi, các bạn cần tìm một chiếc ảnh đẹp nhất trong 100 cái ảnh selfie, hay một đoạn nhạc chill nhất trong cả list playlist dài dằng dặc. filter trong Python chính là 'bộ lọc thần thánh' đó.

Nó giúp bạn 'rây' ra những thứ bạn cần, loại bỏ những thứ không liên quan, dựa trên một 'tiêu chí' rõ ràng. Giống như bạn dùng bộ lọc (filter) trên Instagram để chọn ra những bức ảnh với tông màu ưng ý, filter trong Python sẽ giúp bạn chọn ra những phần tử dữ liệu thỏa mãn điều kiện bạn đặt ra.

Về bản chất, filter() là một higher-order function (hàm bậc cao) trong Python. Nghe hàn lâm không? Đừng lo! Hiểu nôm na là nó nhận vào một 'hàm' khác (cái hàm này sẽ định nghĩa tiêu chí lọc của bạn) và một 'tập hợp' dữ liệu (ví dụ: một list, tuple, set). Sau đó, nó sẽ đi qua từng phần tử trong tập hợp, áp dụng cái hàm tiêu chí đó. Nếu hàm trả về True (nghĩa là 'thỏa mãn điều kiện'), thì phần tử đó được giữ lại. Đơn giản vậy thôi!

Nó giúp code của bạn 'sạch' hơn, 'khai báo' (declarative) hơn. Thay vì viết một vòng for dài loằng ngoằng với if bên trong để tự lọc (kiểu 'mệnh lệnh' - imperative), bạn chỉ cần nói 'ê Python, lọc cho tao những thứ này theo cái điều kiện kia đi!'

2. Code Ví Dụ Minh Họa Rõ Ràng

Cú pháp của filter rất đơn giản: filter(function, iterable)

  • function: Một hàm trả về True hoặc False. Đây là điều kiện lọc của bạn.
  • iterable: Một tập hợp dữ liệu (list, tuple, set, string, etc.) mà bạn muốn lọc.

filter sẽ trả về một iterator (một đối tượng mà bạn có thể lặp qua). Để xem kết quả dưới dạng list, bạn cần list() nó.

Ví dụ 1: Lọc số chẵn từ một list số

# Bước 1: Định nghĩa hàm kiểm tra điều kiện
def la_so_chan(so):
    return so % 2 == 0

list_so = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Bước 2: Áp dụng filter
list_so_chan_iterator = filter(la_so_chan, list_so)

# Bước 3: Chuyển đổi sang list để xem kết quả
ket_qua = list(list_so_chan_iterator)
print(f"Các số chẵn trong list: {ket_qua}")
# Kết quả: Các số chẵn trong list: [2, 4, 6, 8, 10]

Ví dụ 2: Dùng lambda cho gọn gàng hơn (kiểu GenZ)

Với các hàm điều kiện đơn giản, lambda function là chân ái! Nó giúp code ngắn gọn, không cần định nghĩa hàm riêng.

list_diem = [5.5, 7.0, 8.5, 4.0, 9.0, 6.5]

# Lọc các điểm trên 7.0
diem_dat_iterator = filter(lambda diem: diem > 7.0, list_diem)
diem_dat = list(diem_dat_iterator)
print(f"Các điểm đạt yêu cầu: {diem_dat}")
# Kết quả: Các điểm đạt yêu cầu: [8.5, 9.0]

Ví dụ 3: Lọc dữ liệu phức tạp hơn (ví dụ: list các dictionary)

list_sinh_vien = [
    {"ten": "An", "diem_toan": 8, "lop": "A"},
    {"ten": "Binh", "diem_toan": 6, "lop": "B"},
    {"ten": "Cuong", "diem_toan": 9, "lop": "A"},
    {"ten": "Dung", "diem_toan": 7, "lop": "C"},
    {"ten": "Em", "diem_toan": 5, "lop": "A"}
]

# Lọc sinh viên lớp A có điểm toán trên 7
sinh_vien_gioi_lop_A_iterator = filter(
    lambda sv: sv["lop"] == "A" and sv["diem_toan"] > 7,
    list_sinh_vien
)
sinh_vien_gioi_lop_A = list(sinh_vien_gioi_lop_A_iterator)
print(f"Sinh viên giỏi lớp A: {sinh_vien_gioi_lop_A}")
# Kết quả: Sinh viên giỏi lớp A: [{'ten': 'An', 'diem_toan': 8, 'lop': 'A'}, {'ten': 'Cuong', 'diem_toan': 9, 'lop': 'A'}]
Illustration

3. Mẹo (Best Practices) để ghi nhớ và dùng thực tế

  • Ghi nhớ: filter = 'cái rây thần kỳ', giúp bạn sàng lọc những gì 'đúng ý' từ một mớ hỗn độn. Nó chỉ giữ lại các phần tử, không làm thay đổi chúng.

  • Khi nào dùng filter? Khi bạn chỉ cần chọn lọc các phần tử thỏa mãn một điều kiện nào đó từ một tập hợp có sẵn, mà không cần biến đổi các phần tử đó.

  • filter vs. List Comprehension: Đây là cặp đôi hay bị so sánh. filter chuyên về lọc. List Comprehension thì đa năng hơn, có thể vừa lọc vừa biến đổi.

    • Dùng filter khi điều kiện lọc phức tạp, hoặc khi bạn đã có sẵn một hàm lọc.
    • Dùng List Comprehension khi bạn muốn cả lọc và biến đổi (ví dụ: lọc số chẵn nhân đôi chúng).
    • filter trả về iterator, tiết kiệm bộ nhớ cho dữ liệu lớn. List Comprehension tạo ra list mới ngay lập tức.
    # Ví dụ: lọc số chẵn
    so = [1, 2, 3, 4, 5, 6]
    
    # Dùng filter
    ket_qua_filter = list(filter(lambda x: x % 2 == 0, so))
    print(f"Filter: {ket_qua_filter}") # [2, 4, 6]
    
    # Dùng List Comprehension
    ket_qua_lc = [x for x in so if x % 2 == 0]
    print(f"List Comprehension: {ket_qua_lc}") # [2, 4, 6]
    
    # List Comprehension có thể biến đổi:
    ket_qua_lc_bien_doi = [x * 2 for x in so if x % 2 == 0]
    print(f"List Comprehension (biến đổi): {ket_qua_lc_bien_doi}") # [4, 8, 12]
    

4. Ứng dụng thực tế các website/ứng dụng đã dùng

Tư duy lọc dữ liệu là một trong những khái niệm cơ bản và mạnh mẽ nhất trong lập trình, và nó được áp dụng ở khắp mọi nơi, dù có thể không trực tiếp dùng hàm filter của Python nhưng logic thì tương tự:

  • Các trang Thương mại điện tử (Shopee, Tiki, Lazada): Khi bạn lọc sản phẩm theo giá, màu sắc, thương hiệu, đánh giá, loại sản phẩm... Đó chính là filter trong đời thực.
  • Mạng xã hội (Facebook, TikTok, Instagram): Lọc bài đăng theo hashtag, tìm kiếm bạn bè theo tên, lọc tin tức theo sở thích. Mỗi khi bạn cuộn feed và chỉ thấy những nội dung 'phù hợp' với mình, đó là kết quả của một bộ lọc phức tạp.
  • Hệ thống quản lý (Sinh viên, Kho hàng): Lọc danh sách sinh viên theo khoa, điểm số; lọc sản phẩm tồn kho theo hạn sử dụng, nhà cung cấp.
  • Các ứng dụng phân tích dữ liệu: Data Scientists dùng các công cụ tương tự filter để làm sạch, chọn lọc dữ liệu trước khi phân tích.

5. Thử nghiệm đã từng và hướng dẫn nên dùng cho case nào

Thầy Creyt đã 'chinh chiến' với filter từ những ngày đầu và rút ra vài kinh nghiệm xương máu:

  • Nên dùng khi:

    • Bạn có một tập hợp dữ liệu lớn và chỉ muốn lấy ra một tập hợp con dựa trên một điều kiện cụ thể, mà không cần thay đổi các phần tử đó.
    • Điều kiện lọc có thể được gói gọn trong một lambda đơn giản hoặc một hàm riêng biệt đã có sẵn.
    • Bạn quan tâm đến hiệu suất bộ nhớ vì filter trả về một iterator (lazy evaluation), nó chỉ tạo ra phần tử khi bạn yêu cầu, không phải tạo ra toàn bộ list mới trong một lần.
  • Không nên lạm dụng khi:

    • Bạn cần cả lọc và biến đổi dữ liệu. Lúc đó, list comprehension sẽ là lựa chọn sáng giá hơn vì nó thể hiện rõ ràng cả hai mục đích trong một dòng code.
    • Điều kiện lọc quá đơn giản và bạn muốn một list mới ngay lập tức mà không cần quan tâm đến iterator.

Lời khuyên từ Creyt: Hãy coi filter như một công cụ chuyên dụng cho việc lọc. Nó mạnh mẽ, hiệu quả và giúp code của bạn 'declarative' hơn, dễ đọc hơn. Kết hợp nó với lambda để tạo ra những dòng code 'chất như nước cất', vừa ngắn gọn vừa dễ hiểu. Practice makes perfect, các bạn nhé!

Thuộc Series: Python

Bài giảng này được tự động xuất bản ngẫu nhiên từ thư viện kiến thức. Đừng quên đón xem các Từ khoá Hướng Dẫn tiếp theo nhé!

#tech #cyberpunk #laravel
Chỉnh sửa bài viết

Bình luận (0)

Vui lòng Đăng Nhập để Bình luận

Hỗ trợ Markdown cơ bản
Nguyễn Văn A
1 ngày trước

Tính năng này đỉnh quá ad ơi, chờ mãi mới thấy một blog Tiếng Việt có UI/UX xịn như vầy!