How to | Map a Function over a List

The Wolfram Language includes many powerful operations for working with lists. It is often desirable to map a function onto each individual element in a list. While listable functions do this by default, you can use Map to do this with non-listable functions.

First set up a list of the integers from 1 to 5:

In[1]:=
Click for copyable input
Out[1]=

You can map a function over every element of the list using Map; this example uses an undefined function :

In[2]:=
Click for copyable input
Out[2]=

You can use as a shorthand for Map (this is the same command as in the previous example):

In[3]:=
Click for copyable input
Out[3]=

Most mathematical functions have the Listable property, meaning they automatically map over lists:

In[4]:=
Click for copyable input
Out[4]=
In[5]:=
Click for copyable input
Out[5]=

If the function is not Listable, you can use Map, instead. Set up a list of five 2×2 matrices:

In[6]:=
Click for copyable input
Out[6]=

Use Map to map MatrixForm over the list to see each of them in mathematical notation:

In[7]:=
Click for copyable input
Out[7]=

Now use Map to calculate the eigenvalues of each of the matrices in the list:

In[8]:=
Click for copyable input
Out[8]=

Map does not just operate on lists. It can be used for any expression:

In[9]:=
Click for copyable input
Out[9]=
    

Apply is another functional programming operation. It replaces the head of an expression.

You can see how this works using two undefined functions, and :

In[1]:=
Click for copyable input
Out[1]=

Apply has for a shorthand notation (this is the same command as the previous example):

In[2]:=
Click for copyable input
Out[2]=

Common expressions are shown in StandardForm in the Wolfram Language, but their underlying FullForm shows how Apply can be used:

In[3]:=
Click for copyable input
Out[3]=

For example, this changes a sum into a product:

In[4]:=
Click for copyable input
Out[4]=
    

Apply is useful when you want to turn the elements in a list into function arguments.

Create a list of five ordered pairs :

In[1]:=
Click for copyable input
Out[1]=

Mod finds the remainder when dividing the first number of an ordered pair by the second:

In[2]:=
Click for copyable input
Out[2]=

To apply Mod to all of the pairs, you need to work at level 1 of the list (specified by the ):

In[3]:=
Click for copyable input
Out[3]=

You can use as a shorthand to apply at level 1:

In[4]:=
Click for copyable input
Out[4]=

This is another way to do the same thing using a pure function with Function:

In[5]:=
Click for copyable input
Out[5]=

This uses the short form of Function:

In[6]:=
Click for copyable input
Out[6]=