Картографы, Редукторы, Фильтры - PullRequest
1 голос
/ 03 мая 2009

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

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

Ответы [ 4 ]

8 голосов
/ 03 мая 2009

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

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

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

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

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

1 голос
/ 03 мая 2009

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

1 голос
/ 03 мая 2009

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

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

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

l = [1,2,3,4]
l = map(lambda x: x < 3, l)
print l # [True,True,False,False]
0 голосов
/ 03 мая 2009

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

...