filter() trong python

Category: Python

Phương thức filter() lọc chuỗi đã cho với sự trợ giúp của một hàm kiểm tra từng phần tử trong chuỗi là đúng hay không. Chúng ta hãy xem một ví dụ đơn giản về hàm filter() trong python :

Ví dụ sử dụng filter()

# Hàm kiểm tra một số có phải là số chẵn hay không
def even(n):
    return n % 2 == 0

a = [1, 2, 3, 4, 5, 6]
b = filter(even, a)

# Chuyển đối tượng filter thành danh sách
print(list(b))

Đầu ra:

[2, 4, 6]

Giải thích:

  • Chức năng: hàm chẵn kiểm tra xem một số có chia hết cho 2 hay không.

  • Bộ lọc: Bộ lọc() áp dụng hàm này cho mỗi mục theo số.

  • Kết quả: Một phần tử lặp mới chỉ chứa các số chẵn được trả về.

Hãy cùng khám phá chi tiết về filter():

Cú pháp lọc Python()

Phương thức filter() trong Python có cú pháp như sau:

Cú pháp: filter(hàm, chuỗi)

  • hàm: Một hàm định nghĩa điều kiện để lọc các phần tử. Hàm này sẽ trả về True cho các mục bạn muốn giữ lại và False cho các mục bạn muốn loại trừ.

  • iterable: Đối tượng có thể lặp lại mà bạn muốn lọc (ví dụ: danh sách, bộ, tập hợp).

Kết quả là một đối tượng lọc, có thể được chuyển đổi thành danh sách, bộ hoặc một kiểu lặp lại khác.

Chúng ta hãy xem một vài ví dụ về hàm filter() trong Python.

Sử dụng filter() với lambda

Đối với các điều kiện ngắn gọn, chúng ta có thể sử dụng hàm lambda thay vì định nghĩa một hàm được đặt tên.

a = [1, 2, 3, 4, 5, 6]
b = filter(lambda x: x % 2 == 0, a)

print(list(b))

Đầu ra

[2, 4, 6]

Tại đây, hàm lambda thay thế even và trực tiếp định nghĩa điều kiện x % 2 == 0 nội tuyến.

Kết hợp filter() với các hàm khác

Chúng ta có thể kết hợp filter() với các hàm Python khác như map() hoặc sử dụng nó trong một đường ống để xử lý dữ liệu hiệu quả.

Ví dụ: Lọc và Chuyển đổi Dữ liệu

a = [1, 2, 3, 4, 5, 6]

# Đầu tiên, lọc ra các số chẵn
b = filter(lambda x: x % 2 == 0, a)

# Sau đó, nhân đôi các số đã được lọc
c = map(lambda x: x * 2, b)

print(list(c))

Đầu ra

[4, 8, 12]

Giải thích:

  • Hàm filter() trích xuất các số chẵn từ các số.

  • Hàm map() sẽ nhân đôi mỗi số được lọc.

  • Sự kết hợp này giúp đơn giản hóa các đường truyền dữ liệu phức tạp.

Published on Jun 18, 2025