MapIndexed

MapIndexed[f,expr]
applies f to the elements of expr, giving the part specification of each element as a second argument to f.

MapIndexed[f,expr,levelspec]
applies f to all parts of expr on levels specified by levelspec.

MapIndexed[f]
represents an operator form of MapIndexed that can be applied to an expression.

Details and OptionsDetails and Options

  • MapIndexed uses standard level specifications:
  • nlevels 1 through n
    Infinitylevels 1 through Infinity
    {n}level n only
    {n1,n2}levels n1 through n2
  • The default value for levelspec in MapIndexed is {1}.
  • A positive level n consists of all parts of expr specified by n indices.
  • A negative level -n consists of all parts of expr with depth n.
  • Level 1 consists of numbers, symbols, and other objects that do not have subparts.
  • Level 0 corresponds to the whole expression.
  • With the option setting Heads->True, MapIndexed also applies to heads of expressions and their parts.
  • MapIndexed traverses the parts of expr in a depth-first order, with leaves visited before roots. »
  • MapIndexed always effectively constructs a complete new expression and then evaluates it.
  • MapIndexed works on SparseArray objects, effectively by applying Normal to them.
  • MapIndexed works on Association objects, giving part specifications in the form Key[k].
  • MapIndexed[f][expr] is equivalent to MapIndexed[f,expr].

ExamplesExamplesopen allclose all

Basic Examples  (6)Basic Examples  (6)

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

#2 gives the indices of each part:

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

Map over an association:

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

Map over nested associations:

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

Use the operator form of MapIndexed:

In[1]:=
Click for copyable input
Out[1]=
Introduced in 1991
(2.0)
| Updated in 2014
(10.0)