Skip to content

MapIndexed ​

f applied to each part together with its position path, a list.

✓ checked against that system · ! checked, with disagreements (hover a chip)Wolfram LanguageMapIndexed✓
MapIndexed(f, list){f(a1, {1}), f(a2, {2}), …} — the index is a LIST, not a bare integer
MapIndexed(f, list, levelspec)f goes on every part in those levels (as in Level), innermost first, with its full position path
Typed signatures
TypePackageApplies
(function: any, list<any>, any?) -> list<any>combinatoricsalways

Domain: Collections

Details
  • The index arrives as a position path, {i} at the top level, not i; with a level spec, a part at depth 2 gets {i, j}, and so on.
  • Without a level spec, f goes on the top-level parts only.

Examples

Basic #
live ↗
InMapIndexed(f,[a,b,c])\mathrm{MapIndexed}(f, \bigl\lbrack a, b, c\bigr\rbrack)Out[f(a,[1]),f(b,[2]),f(c,[3])]\bigl\lbrack f(a, \bigl\lbrack1\bigr\rbrack), f(b, \bigl\lbrack2\bigr\rbrack), f(c, \bigl\lbrack3\bigr\rbrack)\bigr\rbrack

Each element is passed with its position as a list

live ↗
InMapIndexed(f,[a,b,c,d])\mathrm{MapIndexed}(f, \bigl\lbrack a, b, c, d\bigr\rbrack)Out[f(a,[1]),f(b,[2]),f(c,[3]),f(d,[4])]\bigl\lbrack f(a, \bigl\lbrack1\bigr\rbrack), f(b, \bigl\lbrack2\bigr\rbrack), f(c, \bigl\lbrack3\bigr\rbrack), f(d, \bigl\lbrack4\bigr\rbrack)\bigr\rbrack
live ↗
InMapIndexed(f,[[a,b],[c,d,k]])\mathrm{MapIndexed}(f, \bigl\lbrack\bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack c, d, k\bigr\rbrack\bigr\rbrack)Out[f([a,b],[1]),f([c,d,k],[2])]\bigl\lbrack f(\bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack1\bigr\rbrack), f(\bigl\lbrack c, d, k\bigr\rbrack, \bigl\lbrack2\bigr\rbrack)\bigr\rbrack
live ↗
InMapIndexed(f,[[a,b],[c,d,k]],[2])\mathrm{MapIndexed}(f, \bigl\lbrack\bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack c, d, k\bigr\rbrack\bigr\rbrack, \bigl\lbrack2\bigr\rbrack)Out[[f(a,[1,1]),f(b,[1,2])],[f(c,[2,1]),f(d,[2,2]),f(k,[2,3])]]\bigl\lbrack\bigl\lbrack f(a, \bigl\lbrack1, 1\bigr\rbrack), f(b, \bigl\lbrack1, 2\bigr\rbrack)\bigr\rbrack, \bigl\lbrack f(c, \bigl\lbrack2, 1\bigr\rbrack), f(d, \bigl\lbrack2, 2\bigr\rbrack), f(k, \bigl\lbrack2, 3\bigr\rbrack)\bigr\rbrack\bigr\rbrack
Scope #

Only the outermost level is mapped, so the position is [1][1]

live ↗
InMapIndexed(f,[[[[[a]]]]])\mathrm{MapIndexed}(f, \bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack)Out[f([[[[a]]]],[1])]\bigl\lbrack f(\bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack, \bigl\lbrack1\bigr\rbrack)\bigr\rbrack
live ↗
InMapIndexed(f,[[[[[a]]]]],2)\mathrm{MapIndexed}(f, \bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack, 2)Out[f([f([[[a]]],[1,1])],[1])]\bigl\lbrack f(\bigl\lbrack f(\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack, \bigl\lbrack1, 1\bigr\rbrack)\bigr\rbrack, \bigl\lbrack1\bigr\rbrack)\bigr\rbrack
live ↗
InMapIndexed(f,[[[[[a]]]]],[2])\mathrm{MapIndexed}(f, \bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack, \bigl\lbrack2\bigr\rbrack)Out[[f([[[a]]],[1,1])]]\bigl\lbrack\bigl\lbrack f(\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack, \bigl\lbrack1, 1\bigr\rbrack)\bigr\rbrack\bigr\rbrack
live ↗
InMapIndexed(f,[[[[[a]]]]],3)\mathrm{MapIndexed}(f, \bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack, 3)Out[f([f([f([[a]],[1,1,1])],[1,1])],[1])]\bigl\lbrack f(\bigl\lbrack f(\bigl\lbrack f(\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack, \bigl\lbrack1, 1, 1\bigr\rbrack)\bigr\rbrack, \bigl\lbrack1, 1\bigr\rbrack)\bigr\rbrack, \bigl\lbrack1\bigr\rbrack)\bigr\rbrack
live ↗
InMapIndexed(f,[[a,b],[c,d,[k]]],∞)\mathrm{MapIndexed}(f, \bigl\lbrack\bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack c, d, \bigl\lbrack k\bigr\rbrack\bigr\rbrack\bigr\rbrack, ∞)Out[f([f(a,[1,1]),f(b,[1,2])],[1]),f([f(c,[2,1]),f(d,[2,2]),f([f(k,[2,3,1])],[2,3])],[2])]\bigl\lbrack f(\bigl\lbrack f(a, \bigl\lbrack1, 1\bigr\rbrack), f(b, \bigl\lbrack1, 2\bigr\rbrack)\bigr\rbrack, \bigl\lbrack1\bigr\rbrack), f(\bigl\lbrack f(c, \bigl\lbrack2, 1\bigr\rbrack), f(d, \bigl\lbrack2, 2\bigr\rbrack), f(\bigl\lbrack f(k, \bigl\lbrack2, 3, 1\bigr\rbrack)\bigr\rbrack, \bigl\lbrack2, 3\bigr\rbrack)\bigr\rbrack, \bigl\lbrack2\bigr\rbrack)\bigr\rbrack
live ↗
InMapIndexed(f,[[a,b],[c,d,[k]]],[−1])\mathrm{MapIndexed}(f, \bigl\lbrack\bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack c, d, \bigl\lbrack k\bigr\rbrack\bigr\rbrack\bigr\rbrack, \bigl\lbrack-1\bigr\rbrack)Out[[f(a,[1,1]),f(b,[1,2])],[f(c,[2,1]),f(d,[2,2]),[f(k,[2,3,1])]]]\bigl\lbrack\bigl\lbrack f(a, \bigl\lbrack1, 1\bigr\rbrack), f(b, \bigl\lbrack1, 2\bigr\rbrack)\bigr\rbrack, \bigl\lbrack f(c, \bigl\lbrack2, 1\bigr\rbrack), f(d, \bigl\lbrack2, 2\bigr\rbrack), \bigl\lbrack f(k, \bigl\lbrack2, 3, 1\bigr\rbrack)\bigr\rbrack\bigr\rbrack\bigr\rbrack
live ↗
InMapIndexed(f,[[[[a]]]],−1)\mathrm{MapIndexed}(f, \bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack, -1)Out[f([f([f([f(a,[1,1,1,1])],[1,1,1])],[1,1])],[1])]\bigl\lbrack f(\bigl\lbrack f(\bigl\lbrack f(\bigl\lbrack f(a, \bigl\lbrack1, 1, 1, 1\bigr\rbrack)\bigr\rbrack, \bigl\lbrack1, 1, 1\bigr\rbrack)\bigr\rbrack, \bigl\lbrack1, 1\bigr\rbrack)\bigr\rbrack, \bigl\lbrack1\bigr\rbrack)\bigr\rbrack
live ↗
InMapIndexed(f,[[[[a]]]],−2)\mathrm{MapIndexed}(f, \bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack, -2)Out[f([f([f([a],[1,1,1])],[1,1])],[1])]\bigl\lbrack f(\bigl\lbrack f(\bigl\lbrack f(\bigl\lbrack a\bigr\rbrack, \bigl\lbrack1, 1, 1\bigr\rbrack)\bigr\rbrack, \bigl\lbrack1, 1\bigr\rbrack)\bigr\rbrack, \bigl\lbrack1\bigr\rbrack)\bigr\rbrack
live ↗
InMapIndexed(f,[[[[a]]]],−3)\mathrm{MapIndexed}(f, \bigl\lbrack\bigl\lbrack\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack\bigr\rbrack\bigr\rbrack, -3)Out[f([f([[a]],[1,1])],[1])]\bigl\lbrack f(\bigl\lbrack f(\bigl\lbrack\bigl\lbrack a\bigr\rbrack\bigr\rbrack, \bigl\lbrack1, 1\bigr\rbrack)\bigr\rbrack, \bigl\lbrack1\bigr\rbrack)\bigr\rbrack
live ↗
InMapIndexed(f,[a,b],[0,1])\mathrm{MapIndexed}(f, \bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack0, 1\bigr\rbrack)Outf([f(a,[1]),f(b,[2])],[])f(\bigl\lbrack f(a, \bigl\lbrack1\bigr\rbrack), f(b, \bigl\lbrack2\bigr\rbrack)\bigr\rbrack, \bigl\lbrack\bigr\rbrack)
Applications #

Tags each term with its index

live ↗
InMapIndexed(Labeled,[x2,x+y,y2,y3])\mathrm{MapIndexed}(\mathrm{Labeled}, \bigl\lbrack x^2, x+y, y^2, y^3\bigr\rbrack)Out[Labeled(x2,[1]),Labeled(x+y,[2]),Labeled(y2,[3]),Labeled(y3,[4])]\bigl\lbrack\mathrm{Labeled}(x^2, \bigl\lbrack1\bigr\rbrack), \mathrm{Labeled}(x+y, \bigl\lbrack2\bigr\rbrack), \mathrm{Labeled}(y^2, \bigl\lbrack3\bigr\rbrack), \mathrm{Labeled}(y^3, \bigl\lbrack4\bigr\rbrack)\bigr\rbrack
live ↗
InFirst(Last(Reap(MapIndexed(()↦Sow(_2⁡),[[a,b],[c],[[d]]],[1,∞]))))\mathrm{First}(\mathrm{Last}(\mathrm{Reap}(\mathrm{MapIndexed}(()↦\mathrm{Sow}(\operatorname{\_2}), \bigl\lbrack\bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack c\bigr\rbrack, \bigl\lbrack\bigl\lbrack d\bigr\rbrack\bigr\rbrack\bigr\rbrack, \bigl\lbrack1, ∞\bigr\rbrack))))Out[[1,1],[1,2],[1],[2,1],[2],[3,1,1],[3,1],[3]]\bigl\lbrack\bigl\lbrack1, 1\bigr\rbrack, \bigl\lbrack1, 2\bigr\rbrack, \bigl\lbrack1\bigr\rbrack, \bigl\lbrack2, 1\bigr\rbrack, \bigl\lbrack2\bigr\rbrack, \bigl\lbrack3, 1, 1\bigr\rbrack, \bigl\lbrack3, 1\bigr\rbrack, \bigl\lbrack3\bigr\rbrack\bigr\rbrack
live ↗
In∑MapIndexed(()↦_1⁡xFirst(_2⁡),[a,b,c,d,k])\sum\mathrm{MapIndexed}(()↦\operatorname{\_1}x^{\mathrm{First}(\operatorname{\_2})}, \bigl\lbrack a, b, c, d, k\bigr\rbrack)Outkx5+dx4+cx3+bx2+axkx^5+dx^4+cx^3+bx^2+ax
About
Examples17
Checked againstWolfram Language 17 agree
CrosswalkWolfram Language

See also: MapThread, Level