Phương thức filter () xây dựng một trình vòng lặp từ các phần tử của một trình có thể lặp mà một hàm trả về true.
Nói một cách dễ hiểu, filter()
phương thức lọc giá trị có thể lặp lại đã cho với sự trợ giúp của một hàm kiểm tra từng phần tử trong có thể lặp lại có đúng hay không.
Cú pháp của filter()
phương thức là:
bộ lọc (chức năng, có thể lặp lại)
filter () Tham số
filter()
phương thức nhận hai tham số:
- function - hàm kiểm tra xem các phần tử của một giá trị có thể lặp lại trả về true hay false
Nếu không, hàm này mặc định là Identity function - hàm này trả về false nếu bất kỳ phần tử nào là false - có thể lặp lại - có thể lặp lại sẽ được lọc, có thể là tập hợp, danh sách, bộ giá trị hoặc vùng chứa của bất kỳ trình vòng lặp nào
Trả về giá trị từ bộ lọc ()
filter()
phương thức trả về một trình lặp đã vượt qua kiểm tra hàm cho từng phần tử trong có thể lặp.
filter()
phương thức tương đương với:
# khi hàm được xác định (phần tử cho phần tử trong hàm if có thể lặp lại (phần tử)) # khi hàm là Không (phần tử cho phần tử trong phần tử if có thể lặp)
Ví dụ 1: Bộ lọc () hoạt động như thế nào đối với danh sách có thể lặp lại?
# list of letters letters = ('a', 'b', 'd', 'e', 'i', 'j', 'o') # function that filters vowels def filterVowels(letter): vowels = ('a', 'e', 'i', 'o', 'u') if(letter in vowels): return True else: return False filteredVowels = filter(filterVowels, letters) print('The filtered vowels are:') for vowel in filteredVowels: print(vowel)
Đầu ra
Các nguyên âm được lọc là: aeio
Ở đây, chúng tôi có một danh sách các chữ cái và chỉ cần lọc ra các nguyên âm trong đó.
Chúng ta có thể sử dụng vòng lặp for để lặp qua từng phần tử trong danh sách chữ cái và lưu trữ nó trong một danh sách khác, nhưng trong Python, quá trình này dễ dàng hơn và nhanh hơn bằng cách sử dụng filter()
phương pháp.
Chúng tôi có một chức năng filterVowels
kiểm tra xem một chữ cái có phải là một nguyên âm hay không. Hàm này được chuyển vào filter()
phương thức với danh sách các chữ cái.
filter()
phương thức sau đó chuyển từng ký tự cho filterVowels()
phương thức để kiểm tra xem nó có trả về true hay không. Cuối cùng, nó tạo ra một trình lặp của những cái trả về true (nguyên âm).
Vì trình lặp không tự lưu trữ các giá trị, chúng tôi lặp qua nó và in ra từng nguyên âm một.
Ví dụ 2: Phương thức filter () hoạt động như thế nào khi không có hàm filter?
# random list randomList = (1, 'a', 0, False, True, '0') filteredList = filter(None, randomList) print('The filtered elements are:') for element in filteredList: print(element)
Đầu ra
Các phần tử được lọc là: 1 a Đúng 0
Ở đây, chúng ta có một danh sách ngẫu nhiên gồm các số, chuỗi và boolean trong randomList.
Chúng tôi truyền randomList cho filter()
phương thức có tham số đầu tiên (chức năng lọc) là Không có.
Với chức năng bộ lọc là Không, hàm mặc định là hàm Identity và mỗi phần tử trong randomList được kiểm tra xem nó có đúng hay không.
Khi chúng tôi lặp qua danh sách lọc cuối cùng, chúng tôi nhận được các phần tử là true: 1, a, True and '0'
('0' như một chuỗi cũng đúng).