Hàm filter() trong Python

Hàm filter() trong Python lọc ra các phần tử theo điều kiện của hàm func từ list, dict… Hàm này sẽ chỉ trả về những giá trị mà điều kiện trong func chấp nhận (có nghĩa là True). Cú pháp của hàm filter() như thế nào, nó có những tham số gì và cách sử dụng ra sao? Mời bạn đọc theo dõi.

Cú pháp hàm filter() trong Python

filter(func, iterable)

Các tham số của hàm filter()

Hàm filter() có 2 tham số:

  • func: là hàm điều kiện để kiểm tra các phần tử trong interable là đúng hay sai, func chỉ có thể trả về True hoặc False.
  • interable: là các iterable cần lọc, có thể là set, list, tuple hoặc container.

Ví dụ : Hàm filter() hoạt động thế nào?

# danh sách chữ cái
alphabet = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# lọc nguyên âm
# viết bởi Quantrimang.com
def filterNguyenam(alphabet):
nguyenam = ['a', 'e', 'i', 'o', 'u']

if(alphabet in nguyenam):
return True
else:
return False

filterNguyenam = filter(filterNguyenam, alphabet)

print('Các nguyên âm được lọc là:')
for nguyenam in filterNguyenam:
print(nguyenam)

Chạy chương trình, kết quả trả về là:

Các nguyên âm được lc là: a e i o

Ở đây, ta liệt kê một danh sách các chữ cái và cần lọc ra các nguyên âm trong đó.

Bạn có thể sử dụng vòng lặp for để kiểm tra từng thành phần trong danh sách và lưu trữ nó sang một danh sách khác, nhưng sử dụng Python thì quá trình này sẽ dễ dàng hơn và nhanh hơn bằng cách dùng phương thức filter().

Ví dụ 2: filter() hoạt động không cần func.

# random list
# viết bởi Quantrimang.com
randomList = [1, 'a', 0, False, True, '0']

filteredList = filter(None, randomList)

print('Các phần tử được lọc là:')
for element in filteredList:
print(element)

Chạy chương trình, kết quả trả về là:

Các phn t được lc là: 1 a True 0

Ở đây, ta có một danh sách ngẫu nhiên gồm cả số, chuỗi và boolean gọi là randomList. Chúng ta truyền randomList vào hàm filter() với tham số đầu tiên (func) là None. Lúc này, hàm tự mặc định trở thành Identity function, vậy nên ta nhận được các phần tử TRUE là 1, a, True và ‘0’ (‘0’ ở dạng chuỗi).