English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Метод filter() создаёт итератор из элементов объекта iterable, для которых функция возвращает true.
Простыми словами, метод filter() с помощью функции фильтрует данные iterable, тестируя каждый элемент на истинность.
Синтаксис метода filter():
filter(function, iterable)
Метод filter() принимает два параметра:
функция-
-функция для тестирования элементов iterable, если её нет, то по умолчанию используется Identity функция - если какой-либо элемент равен false, то возвращает false
iterable-iterable для фильтрации, может быть:Множество,Список,Тупльили контейнер любого итератора
Метод filter() возвращает итератор, который для каждого элемента iterable передаёт функцию для проверки.
Метод filter() эквивалентен:
# когда функция определена (element for element in iterable if function(element)) # когда функция пуста (element for element in iterable if element)
# 按字母顺序排列的列表 alphabets = ['a', 'b', 'd', 'e', 'i', 'j', 'o'] # 过滤元音的函数 def filterVowels(alphabet): vowels = ['a', 'e', 'i', 'o', 'u'] if(alphabet in vowels): return True else: return False filteredVowels = filter(filterVowels, alphabets) print('过滤后的元音是:') for vowel in filteredVowels: print(vowel)
При выполнении этого программы, вывод будет:
Элементы гласных после фильтрации: a e i o
Здесь мы перечислили список символов, и нужно просто удалить из него гласные.
Мы можем использовать цикл for для遍енияalphabetsКаждый элемент списка, и его хранят в другом списке, но в Python с помощью метода filter() этот процесс можно сделать более легким и быстрым.
У нас есть функция filterVowels, которая проверяет, является ли символ гласной. Эта функция передается в метод filter() вместе с списком символов.
Затем метод filter() передает каждый символ функции filterVowels() для проверки, вернет ли он true. В конце он создает итератор, возвращающий true (гласные).
Поскольку итератор сам по себе не хранит значения, мы проходим по нему и по одному выводим гласные.
# Случайный список randomList = [1, 'a', 0, False, True, '0'] filteredList = filter(None, randomList) print('Элементы после фильтрации:') for element in filteredList: print(element)
При выполнении этого программы, вывод будет:
Элементы после фильтрации: 1 a True 0
ЗдесьrandomListЭто случайная список, состоящий из чисел, строк и булевых значений.
МыrandomListПеременная, переданная в качестве первого параметра filter() (функция фильтрации), этоМетоды None.
Когда мы устанавливаем filter функцию в None, по умолчанию это функция идентичности, и проверяемиз randomListКаждый элемент true или нет.
Когда мы проходим по конечномупри фильтрации listЭлементы, которые мы получили, true: (1, a, True и '0' в виде строки, поэтому '0' также true).