Метод filter () создает итератор из элементов итерируемого объекта, для которого функция возвращает значение true.
Проще говоря, filter()
метод фильтрует данную итерацию с помощью функции, которая проверяет, является ли каждый элемент в итерации истинным или нет.
Синтаксис filter()
метода:
фильтр (функция, итерация)
filter () Параметры
filter()
метод принимает два параметра:
- function - функция, которая проверяет, возвращают ли элементы итерируемого значения true или false.
Если None, функция по умолчанию использует функцию Identity, которая возвращает false, если какие-либо элементы являются ложными. - iterable - итерабельный, который должен быть отфильтрован, может быть наборами, списками, кортежами или контейнерами любых итераторов
Возвращаемое значение из filter ()
filter()
Метод возвращает итератор, который прошел проверку функции для каждого элемента в итерируемом объекте.
filter()
метод эквивалентен:
# когда функция определена (элемент для элемента в итерабельном if function (element)) # когда функция None (элемент для элемента в итерабельном if element)
Пример 1: Как filter () работает для повторяющегося списка?
# 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 проверяется, является ли он истинным или нет.
Когда мы перебираем последний filterList, мы получаем элементы, которые являются истинными: 1, a, True and '0'
('0' как строка также истинно).