FirstPosition

FirstPosition[expr,pattern]

gives the position of the first element in expr that matches pattern, or Missing["NotFound"] if no such element is found.

FirstPosition[expr,pattern,default]

gives default if no element matching pattern is found.

FirstPosition[expr,pattern,default,levelspec]

finds only objects that appear on levels specified by levelspec.

FirstPosition[pattern]

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

Details and Options

  • In FirstPosition[expr,pattern,default], default is evaluated only if no element matching pattern is found.
  • The expression expr can be a list, an association, or any other type of expression. In the case of an association, FirstPosition gives a key.
  • The default level specification for FirstPosition is {0,Infinity}, with Heads->True.
  • A part specification {} returned by FirstPosition represents the whole of expr.
  • FirstPosition[list,pattern,default,{1},Heads->False] finds positions only of objects that appear as complete elements of list.
  • FirstPosition uses standard level specifications:
  • nlevels 1 through n
    Infinitylevels 1 through Infinity
    {n}level n only
    {n1,n2}levels n1 through n2
  • 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 0 corresponds to the whole expression.
  • With the default option setting Heads->True, FirstPosition includes heads of expressions and their parts.
  • FirstPosition traverses expressions in depthfirst order.
  • FirstPosition[pattern][expr] is equivalent to FirstPosition[expr,pattern].

Examples

open allclose all

Basic Examples  (3)

Find the first position at which b occurs:

Find the first position at which x to any power appears:

Find the first position in an Association:

Scope  (4)

Use a position operator:

Find the first position with a prime value:

Specify a custom default value:

Look for 3 anywhere:

Look for only a 3 that appears as an element of the outermost list:

Options  (1)

Heads  (1)

By default, FirstPosition will search expression heads:

Use the option Heads->False to exclude them:

Properties & Relations  (3)

The default value is only evaluated if needed:

Use Extract to extract parts based on results from FirstPosition:

FirstPosition returns only the first position:

Position returns all positions:

FirstPosition can be implemented with a combination of Position and Replace:

Possible Issues  (1)

FirstPosition searches based on patterns, which may not be the same as numerical equality:

Write a pattern using Condition to force searching based on numerical equality:

Introduced in 2014
 (10.0)