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


applies f to all parts of expr on levels specified by levelspec.


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

Details 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].


open allclose all

Basic Examples  (6)

#2 gives the indices of each part:

Map over an association:

Map over nested associations:

Use the operator form of MapIndexed:

Scope  (6)

Level Specifications  (6)

Map at level 1 (default):

Map down to level 2:

Map at level 2:

Map down to level 3:

Map onto all elements of an expression:

Map only onto the "leaves" of the expression:

Negative levels:

Different heads at each level:

Map on levels 0 through 1; the head has index {}:

Generalizations & Extensions  (3)

MapIndexed can be used on expressions with any head:

The function can be mapped onto the heads as well:

MapIndexed works on sparse arrays:

Options  (2)

Heads  (2)

By default, the function is not mapped onto the heads:

Map onto the heads at all levels:

Applications  (5)

Label parts by position:

Use tooltips to show part numbers of subexpressions:

Convert a list to a polynomial:

Rotate lists based on position:

Obtain a list of all parts in an expression:

Properties & Relations  (2)

Leaves are visited before roots:

Using only the first argument is equivalent to using Map:

Wolfram Research (1991), MapIndexed, Wolfram Language function, (updated 2014).


Wolfram Research (1991), MapIndexed, Wolfram Language function, (updated 2014).


@misc{reference.wolfram_2020_mapindexed, author="Wolfram Research", title="{MapIndexed}", year="2014", howpublished="\url{}", note=[Accessed: 15-January-2021 ]}


@online{reference.wolfram_2020_mapindexed, organization={Wolfram Research}, title={MapIndexed}, year={2014}, url={}, note=[Accessed: 15-January-2021 ]}


Wolfram Language. 1991. "MapIndexed." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2014.


Wolfram Language. (1991). MapIndexed. Wolfram Language & System Documentation Center. Retrieved from