1

I know about map/reduce alghoritm and its use. It's using functions that are called Mappers and Reducers, but I also find people use the word Filters.

Are Filters same as Mappers or is there some significant difference?

Azder
  • 4,698
  • 7
  • 37
  • 57

4 Answers4

8

A filter is like a map for which the passed function is always a "characteristic function", that is a function that returns either "yes" or "no" to the question "does this belong here?"

In other words, think of a set defined as {x | x ∈ X and P(x) }. Filter takes the base set, tests to see if P(x) is true, and returns only those members for which it is true.

So { x | x is a natural number and odd(x) } is {1,3,5,7...}.

A map applies an arbitrary function, so you can think of that as a set like { y | x ∈ X and y = f(x) }.

So { y | x is a natural number and y = x² } is {1,4,9,16,...}.

Charlie Martin
  • 110,348
  • 25
  • 193
  • 263
1

Filter takes a "list" and a function, applies the function to every member of the list and returns a new list containing only members where the application of the function returned true. For instance:

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

Map does the same thing, but returns a list containing the results of the function application:

l = [1,2,3,4]
l = map(lambda x: x < 3, l)
print l # [True,True,False,False]
Patrick
  • 90,362
  • 11
  • 51
  • 61
1

A filter determines if an item should be kept or removed. A mapper just translates the value in to another. As a consequence: The output set of a map operation is always equal in size with the input set. The output on a filter operation is smaller than the input set.

Emil H
  • 39,840
  • 10
  • 78
  • 97
0

Generally, map functions take an input set and a function, and returns a set containing the function output for each input element. A filter takes an input set and a boolean function, and returns a set containing the input values for which the function returns true.

Alex
  • 4,316
  • 2
  • 24
  • 28