Skip to content

Take

Status: Stable

documented, exercised by the test suite and/or worked examples, with no known limitations recorded.

Description

Take[list, n]

gives the first n elements of list.

Take[list, -n]

gives the last n elements.

Take[list, {m, n}]

gives elements m through n.

Take[list, {m, n, s}]

gives elements m through n in steps of s.

Take[list, {m}]

gives the single element at position m (wrapped in the head of list).

Take[list, spec1, spec2, ...]

takes elements at successive levels, e.g. a sub-block of a matrix.

Notes Negative indices count from the end; UpTo\[n\], All, and None are also accepted as specifications. Indices are 1-based; out-of-range requests leave the expression unevaluated. Take operates on any expression, not just List.

Examples (8)

Every input below was run against the current Mathilda build and its output recorded.

Basic examples (3)

In[1]:= First[<|"a" -> 10, "b" -> 20|>] In[1b]:= First[<||>, 0] Out[1b]= 0

In[2]:= Rest[<|"a" -> 10, "b" -> 20, "c" -> 30|>]
Out[2]= <|"b" -> 20, "c" -> 30|>

In[3]:= Take[<|"a" -> 1, "b" -> 2, "c" -> 3|>, 2]
Out[3]= <|"a" -> 1, "b" -> 2|>

Applications (5)

In[4]:= Take[{a, b, c, d, e}, 3]
Out[4]= {a, b, c}

In[5]:= Take[{a, b, c, d, e}, -2]
Out[5]= {d, e}

In[6]:= Take[Range[10], {2, 8, 2}]
Out[6]= {2, 4, 6, 8}

In[7]:= Take[{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, 2, 2]
Out[7]= {{1, 2}, {4, 5}}

In[8]:= Take[Table[Fibonacci[n], {n, 1, 15}], {3, 15, 3}]
Out[8]= {2, 8, 34, 144, 610}

Performance

Against other systems, from the benchmark suite (same input, results cross-checked for agreement):

case Mathilda Wolfram Python
Sort 4x10^6 42.2 s 68.7 s 111 s
gather v[[idx]], 4x10^6 16.8 s 6.66 s 7.18 s
Union of 4x10^6 integers 12.4 s 71.1 s 376 s
Reverse 4x10^6 5.37 s 0.297 s 0.982 s
Join two 2x10^6 0.899 s 0.6 s 0.397 s
RotateLeft 4x10^6 by 1000 0.855 s 0.307 s 0.456 s

Implementation notes

Attributes: NHoldRest, Protected.

References

See also: First, Last, Rest, Most, Drop

Notes & additional examples

Notes

Take[list, n] takes the first n elements, Take[list, -n] the last n, and Take[list, {m, n}] (optionally {m, n, s} with a step) an inclusive index range. Indices are 1-based and negative indices count from the end; UpTo[n], All, and None are also accepted. Multiple specifications act level by level, so Take[mat, 2, 2] extracts the top-left 2x2 sub-block of a matrix. Take operates on any expression, not only List; out-of-range requests are left unevaluated.