Вопрос

Я знаю о карте / уменьшении алгоритма и его использовании. Он использует функции, которые называются Mappers и Reducers, но я также нахожу, что люди используют слово Filters.

Фильтры такие же, как и в Mappers, или есть существенная разница?

Это было полезно?

Решение

Фильтр похож на карту, для которой переданная функция всегда является «характеристической функцией», то есть функцией, которая возвращает либо «да» или "нет" на вопрос "это здесь относится?"

Другими словами, думайте о множестве, определенном как {x | х & # 8712; X и P (x) }. Фильтр берет базовый набор, проверяет, является ли P (x) истинным, и возвращает только те элементы, для которых он истинен.

Итак, < x | x - натуральное число, а нечетное ( x )} - {1,3,5,7 ...}.

map применяет произвольную функцию, так что вы можете думать об этом как о наборе, подобном {y | x & # 8712; X и y = f (x) }.

Итак, < у | x - натуральное число, а y = x & # 178; } - {1,4,9,16, ...}.

Другие советы

Фильтр принимает «список». и функция, применяет функцию к каждому члену списка и возвращает новый список, содержащий только те элементы, для которых применение функции вернуло значение true. Например:

l = [1,2,3,4]
l = filter(lambda x: x < 3, l)
print l # [1,2]

Map делает то же самое, но возвращает список, содержащий результаты применения функции:

l = [1,2,3,4]
l = map(lambda x: x < 3, l)
print l # [True,True,False,False]

Фильтр определяет, должен ли элемент быть сохранен или удален. Картограф просто переводит значение в другое. Как следствие: выходной набор операции карты всегда равен по размеру входному набору. Выходные данные для операции фильтрации меньше, чем входной набор.

Обычно функции карты принимают набор входных данных и функцию и возвращают набор, содержащий выходные данные функции для каждого элемента ввода. Фильтр принимает входной набор и логическую функцию и возвращает набор, содержащий входные значения, для которых функция возвращает true.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top