English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной курс Python

Контроль потока Python

Функции Python

Типы данных Python

Файловые операции Python

Объекты и классы Python

Дата и время Python

Продвинутые знания Python

Руководство Python

Метод filter() в Python с примерами

Внутренние функции Python

Метод filter() создаёт итератор из элементов объекта iterable, для которых функция возвращает true.

Простыми словами, метод filter() с помощью функции фильтрует данные iterable, тестируя каждый элемент на истинность.

Синтаксис метода filter():

filter(function, iterable)

Параметры filter()

Метод filter() принимает два параметра:

  • функция-

  • -функция для тестирования элементов iterable, если её нет, то по умолчанию используется Identity функция - если какой-либо элемент равен false, то возвращает false

  • iterable-iterable для фильтрации, может быть:Множество,Список,Тупльили контейнер любого итератора

Возврат filter()

Метод filter() возвращает итератор, который для каждого элемента iterable передаёт функцию для проверки.

Метод filter() эквивалентен:

# когда функция определена
(element for element in iterable if function(element))
# когда функция пуста
(element for element in iterable if element)

Пример 1: как работает filter() с итерируемым списком?

# 按字母顺序排列的列表
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 (гласные).

Поскольку итератор сам по себе не хранит значения, мы проходим по нему и по одному выводим гласные.

Пример 2: Как работает метод filter() без функции filter?

# Случайный список
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).

Внутренние функции Python