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.
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 Options
- MapIndexed uses standard level specifications:
-
n levels 1 through n Infinity levels 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 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].
- Parallelize[MapIndexed[f,expr]] computes MapIndexed[f,expr] in parallel on all subkernels. »
Examples
open all close allBasic Examples (6)
MapIndexed[f, {a, b, c, d}]#2 gives the indices of each part:
MapIndexed[First[#2] + f[#1]&, {a, b, c, d}]MapIndexed[f, {{a, b}, {c, d, e}}]MapIndexed[f, {{a, b}, {c, d, e}}, {2}]MapIndexed[f, <|"a" -> 1, a -> 2, 1 -> 1|>]MapIndexed[h, <|a -> <|b -> c, p -> <|q -> r|>|>, d -> {e}|>, {2}]Use the operator form of MapIndexed:
MapIndexed[f][{a, b, c, d}]Scope (6)
Level Specifications (6)
MapIndexed[f, {{{{{a}}}}}]MapIndexed[f, {{{{{a}}}}}, 2]MapIndexed[f, {{{{{a}}}}}, {2}]MapIndexed[f, {{{{{a}}}}}, 3]Map onto all elements of an expression:
MapIndexed[f, {{a, b}, {c, d, {e}}}, Infinity]Map only onto the "leaves" of the expression:
MapIndexed[f, {{a, b}, {c, d, {e}}}, {-1}]MapIndexed[f, {{{{a}}}}, -1]MapIndexed[f, {{{{a}}}}, -2]MapIndexed[f, {{{{a}}}}, -3]Different heads at each level:
MapIndexed[f, h0[h1[h2[h3[h4[a]]]]], {2, -3}]Map on levels 0 through 1; the head has index {}:
MapIndexed[f, {a, b}, {0, 1}]Generalizations & Extensions (3)
MapIndexed can be used on expressions with any head:
MapIndexed[f, a + b + c + d]The function can be mapped onto the heads as well:
MapIndexed[f, {a, b, c}, Heads -> True]MapIndexed works on sparse arrays:
MapIndexed[f, SparseArray[3 -> a, 5]]Options (2)
Applications (5)
MapIndexed[Labeled, {x ^ 2, x + y, y ^ 2, y ^ 3}]MapIndexed[Framed[Labeled[#1, #2]]&, {x ^ 2, x + y, y ^ 2, y ^ 3}, Infinity]Use tooltips to show part numbers of subexpressions:
MapIndexed[Tooltip, Integrate[1 / (x ^ 4 - 1), x], Infinity]Convert a list to a polynomial:
Total[MapIndexed[#1 x ^ First[#2]&, {a, b, c, d, e}]]Rotate lists based on position:
MapIndexed[RotateLeft, Table[{a, b, c}, {6}]]MapIndexed[RotateLeft, Table[{{a, b}, {c, d}}, {3}, {3}], {2}]//MatrixFormObtain a list of all parts in an expression:
First@Last[Reap[MapIndexed[Sow[#2]&, {{a, b}, {c}, {{d}}}, {1, ∞}]]]Position[{{a, b}, {c}, {{d}}}, _, Infinity, Heads -> False]Properties & Relations (3)
Using only the first argument is equivalent to using Map:
MapIndexed[f[#1]&, {a, b, c}]Map[f, {a, b, c}]The result of MapIndexed on an association is closely related to the result of KeyValueMap:
MapIndexed[f, <|a -> 1, b -> 2, c -> 3|>]KeyValueMap[g, <|a -> 1, b -> 2, c -> 3|>]Use a combination of Values and Part to obtain the same result:
Values@MapIndexed[g[#2[[1, 1]], #1]&, <|a -> 1, b -> 2, c -> 3|>]Compute MapIndexed in parallel:
Parallelize[MapIndexed[List, {a, b, c, d}]]See Also
MapAt Map SubsetMap KeyValueMap SparseArray
Function Repository: MapSlice MapSelectCounted FoldIndexedList AddIndices FoldIndexed
Tech Notes
Related Guides
Related Links
History
Introduced in 1991 (2.0) | Updated in 2014 (10.0)
Text
Wolfram Research (1991), MapIndexed, Wolfram Language function, https://reference.wolfram.com/language/ref/MapIndexed.html (updated 2014).
CMS
Wolfram Language. 1991. "MapIndexed." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2014. https://reference.wolfram.com/language/ref/MapIndexed.html.
APA
Wolfram Language. (1991). MapIndexed. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/MapIndexed.html
BibTeX
@misc{reference.wolfram_2026_mapindexed, author="Wolfram Research", title="{MapIndexed}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/MapIndexed.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_mapindexed, organization={Wolfram Research}, title={MapIndexed}, year={2014}, url={https://reference.wolfram.com/language/ref/MapIndexed.html}, note=[Accessed: 13-June-2026]}