Методът filter () изгражда итератор от елементи на итерабел, за който функция връща true.
С прости думи, filter()
методът филтрира дадения итерируем с помощта на функция, която тества всеки елемент в итерируемия за вярно или не.
Синтаксисът на filter()
метода е:
филтър (функция, итерируем)
filter () Параметри
filter()
методът взема два параметъра:
- функция - функция, която тества дали елементите на итерируемо връщат true или false
Ако няма, функцията по подразбиране е функция Identity - която връща false, ако някои елементи са false - iterable - iterable, който трябва да бъде филтриран, може да бъде набори, списъци, кортежи или контейнери на всякакви итератори
Връщане на стойност от filter ()
filter()
метод връща итератор, който е преминал проверката на функцията за всеки елемент в итерируемия.
filter()
методът е еквивалентен на:
# когато е дефинирана функция (елемент за елемент в итерируем, ако функция (елемент)) # когато функцията е None (елемент за елемент в итерируем if елемент)
Пример 1: Как филтърът () работи за списък, който може да се изтегли?
# 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)
Изход
Филтрираните гласни са: aeio
Тук имаме списък с букви и трябва да филтрираме само гласните в него.
Можем да използваме цикъл for, за да преминем през всеки елемент в списъка с букви и да го съхраним в друг списък, но в Python този процес е по-лесен и по-бърз с помощта на filter()
метод.
Имаме функция, filterVowels
която проверява дали буквата е гласна или не. Тази функция се предава на filter()
метод със списък с букви.
filter()
След това методът предава всяка буква на filterVowels()
метода, за да провери дали връща вярно или не. В крайна сметка създава итератор на тези, които връщат true (гласни).
Тъй като итераторът не съхранява самите стойности, ние го преглеждаме и отпечатваме гласни един по един.
Пример 2: Как работи методът 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)
Изход
Филтрираните елементи са: 1 a True 0
Тук имаме случаен списък с числа, низ и булево значение в randomList.
Предаваме randomList на filter()
метода с първи параметър (функция на филтъра) като None.
С функция на филтър като None, функцията по подразбиране е функция Identity и всеки елемент в randomList се проверява дали е вярно или не.
Когато преглеждаме крайния филтриран 1, a, True and '0'
списък , получаваме елементите, които са верни: ('0' като низ също е вярно).