# [Tutor] Difference between filter and map

Danny Yoo dyoo at hkn.eecs.berkeley.edu
Tue Jan 23 16:33:55 CET 2007

```
On Tue, 23 Jan 2007, vanam wrote:

> i want to know the difference between filter(function,sequence) and
> map(function,sequence).

Hi Vanam,

They may both take functions as input, but the intention of the functions
is different.  In the case of filter(), the input function is used to cull
the good elements of the sequence out.

############################################################################
>>> def starts_with_ab(word):
...     return word[:2] == 'ab'
...
>>> filter(starts_with_ab, ["abracadabra", "open sesame", "abraham lincoln"]
... )
['abracadabra', 'abraham lincoln']
############################################################################

> i am getting the same results for instance
> def squ(x):
>    return x*x
> filter(squ,range(1,3))->1,4(output)
> map(squ,range(1,3)->1,4(output)

This doesn't look right.  Please copy and paste exactly what you typed,
and exactly what the program outputted.  You need to do this carefully or
we can't reproduce what you see.

In fact, concretely, when you reply to Kent, you show a different
definition of squ():

###########
def squ(n):
y = n*n
print y
###########

Be more careful next time.

In this case, squ() isn't even returning back a value, so you can't expect
good things to come out of filter() and map(): filter and map depend on
the input function actually giving values back.

What you're seeing on screen is the "side-effects" of calling squ() on
every element.
```

More information about the Tutor mailing list