Trên Python, filter()
là một hàm built-in để lọc các phần tử trong một danh sách (list) hoặc một iterator dựa trên một hàm điều kiện (condition function) được áp dụng lên từng phần tử.
Cú pháp:
filter(function, iterable)
Trong đó:
function
: hàm điều kiện được áp dụng lên từng phần tử. Hàm này phải trả về True hoặc False.iterable
: danh sách hoặc iterator chứa các phần tử được lọc.
Hàm filter()
trả về một iterator chứa các phần tử thỏa điều kiện của hàm function
.
Ví dụ 1:
# Lọc các số chẵn trong một danh sách các số nguyên
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # output: [2, 4, 6, 8, 10]
Trong ví dụ trên, hàm filter()
được áp dụng lên danh sách numbers
để lọc các số chẵn. Hàm điều kiện là lambda function lambda x: x % 2 == 0
, kiểm tra xem số đó có chia hết cho 2 hay không. Danh sách even_numbers
sẽ chỉ chứa các số chẵn.
Ví dụ 2:
Trong quản trị hệ thống Linux, filter()
trong Python có thể được sử dụng để lọc danh sách các file trong một thư mục.
Ví dụ, ta có thư mục sau:
/home/user/files/
file1.txt
file2.csv
file3.txt
file4.png
file5.txt
Chúng ta muốn lọc danh sách các file trong thư mục này để chỉ lấy các file có phần mở rộng là .txt
. Ta có thể sử dụng hàm filter()
để thực hiện điều này:
import os
path = "/home/user/files/"
txt_files = filter(lambda x: x.endswith('.txt'), os.listdir(path))
print(list(txt_files)) # output: ['file1.txt', 'file3.txt', 'file5.txt']
Ở đây, hàm os.listdir()
trả về một danh sách các file và thư mục trong đường dẫn được cung cấp. Sau đó, chúng ta sử dụng filter()
để lọc các file chỉ với phần mở rộng là .txt
và lưu trữ chúng trong biến txt_files
. Kết quả được in ra màn hình là danh sách các file có phần mở rộng là .txt
.