Метод filter () створює ітератор з елементів ітераційного елемента, для якого функція повертає true.
Простими словами, filter()
метод фільтрує заданий ітерабель за допомогою функції, яка перевіряє кожен елемент у ітерації на істинність чи ні.
Синтаксис filter()
методу:
фільтр (функція, ітерація)
filter () Параметри
filter()
метод приймає два параметри:
- function - функція, яка перевіряє, чи повертаються елементи ітеративного значення true або
false. - iterable - ітерація, яка підлягає фільтруванню, може бути наборами, списками, кортежами або контейнерами будь-яких ітераторів
Повернути значення з фільтра ()
filter()
метод повертає ітератор, який пройшов перевірку функції для кожного елемента в ітерабель.
filter()
метод еквівалентний:
# коли визначена функція (елемент для елемента в ітерабельному, якщо функція (елемент)) # коли функція відсутня (елемент для елемента в ітерабельному, якщо елемент)
Приклад 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()
методу, щоб перевірити, повертає вона істину чи ні. Зрештою, він створює ітератор тих, що повертають істину (голосні).
Оскільки ітератор не зберігає самі значення, ми прокручуємо його та друкуємо голосні по черзі.
Приклад 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' як рядок також є істинним).