SelectFirst[data,crit]
gives the first ei of data for which crit[ei] is True, or Missing["NotFound"] if none is found.
SelectFirst[data,critprop]
returns the property prop of the selected elements.
SelectFirst[data,crit,default]
gives default if there is no ei of data such that crit[ei] is True.
SelectFirst[crit]
represents an operator form of SelectFirst that can be applied to an expression.
SelectFirst
SelectFirst[data,crit]
gives the first ei of data for which crit[ei] is True, or Missing["NotFound"] if none is found.
SelectFirst[data,critprop]
returns the property prop of the selected elements.
SelectFirst[data,crit,default]
gives default if there is no ei of data such that crit[ei] is True.
SelectFirst[crit]
represents an operator form of SelectFirst that can be applied to an expression.
Details
- SelectFirst keeps the first element for which the given criterion crit is True:
- SelectFirst[data,crit] is equivalent to First[Select[data,crit]].
- The data can have the following additional forms and interpretations:
-
{e1,e2,…} list of values » f[e1,e2,…] any head f » Association association of values » QuantityArray[…] quantity array or other structured array Tabular[…] type-consistent tabular data » TabularColumn[…] type-consistent column data » Dataset[…] general hierarchical data - The property prop can have the following forms and interpretations:
-
"Element" the selected values » "Index" indices of the selected values » "BitVectorMask" Boolean mask returning True for selected values and False otherwise » {prop1,prop2,…} a list of multiple forms » All an association giving element, index and bit vector mask » - In SelectFirst[data,crit,default], default is only evaluated if there is no ei in data such that crit[ei] is True.
- SelectFirst[crit][data] is equivalent to SelectFirst[data,crit].
Examples
open all close allBasic Examples (6)
Select the first element that is even:
SelectFirst[{1, 2, 4, 7, 6, 2}, EvenQ]Return the index of the selected element:
SelectFirst[{1, 2, 4, 7, 6, 2}, # > 2& -> "Index"]Give the default x when no even numbers are found:
SelectFirst[{1, 3, 5}, EvenQ, x]Use the operator form of SelectFirst:
SelectFirst[EvenQ][{1, 2, 4, 7, 6, 2}]SelectFirst operates on values in an Association:
SelectFirst[<|a -> 1, b -> 2, c -> 3, d -> 4|>, # > 2&]Use SelectFirst with a Tabular object:
Tabular[{{"cat", 2}, {"fox", 3}, {"dog", 5}}, {"a", "b"}]SelectFirst[%, OddQ[#b]&]Normal[%]Scope (15)
Basic Uses (5)
Find the first pair containing x:
SelectFirst[{{1, y}, {2, z}, {3, x}, {4, y}, {5, x}}, MemberQ[#, x]&]Use a pure function to test elements:
SelectFirst[{1, 2, 4, 7, 6, 2}, # > 2&]Use an operator form as selection criterion:
SelectFirst[Range[10], GreaterThan[3]]Use SelectFirst in operator form:
Range[10]//SelectFirst[GreaterThan[3]]SelectFirst[{1, 2, 3}, StringQ, "NoStrings"]Input Data (5)
SelectFirst works with any head, not just List:
SelectFirst[f[1, a, 2, b, 3], IntegerQ]SelectFirst works on values in Association:
SelectFirst[<|"a" -> {.1, .3, .2}, "b" -> {"dog", "cat", "fox"}|>, AllTrue[#, StringQ]&]SelectFirst works with vector SparseArray objects:
s = SparseArray[Table[2 ^ i -> i, {i, 0, 5}]]SelectFirst[s, OddQ]SelectFirst works with TabularColumn objects:
TabularColumn[RandomDate[10 ^ 5]]Select the first date in November:
SelectFirst[SameQ[DateValue[#, "Month"], 11]&][%]Use SelectFirst on a Tabular object with named columns:
tab = ToTabular[{"a" -> {1, 2, 3}, "b" -> {.1, .3, .2}, "c" -> {"dog", "cat", "fox"}, "d" -> {DateObject[{2024, 8, 1}], DateObject[{2024, 8, 2}], DateObject[{2024, 8, 3}]}}, "Columns"]Select the first row with last column date being a business day:
SelectFirst[tab, Function[BusinessDayQ[#d]]]Normal[%]Property Forms (5)
SelectFirst[{2, 3, 4, 5}, OddQ -> "Element"]Return the index of the selected element:
SelectFirst[{2, 3, 4, 5}, OddQ -> "Index"]Return the Boolean mask of the data:
SelectFirst[{2, 3, 4, 5}, OddQ -> "BitVectorMask"]Normal[%]SelectFirst[{2, 3, 4, 5}, OddQ -> {"Element", "Index"}]Return the association with all the properties:
SelectFirst[{2, 3, 4, 5}, OddQ -> All]Applications (7)
Select the first number between 9 and 99 that equals 1 modulo both 3 and 5:
SelectFirst[Range[9, 99], Mod[#, 3] == 1 && Mod[#, 5] == 1&]Select the first 4-tuple that reads the same in reverse:
SelectFirst[Tuples[{a, b}, 4], # == Reverse[#]&]Find the first 3×3 matrix of 0s and 1s that has determinant 1:
SelectFirst[Tuples[{0, 1}, {3, 3}], Det[#] == 1&]Select an eigenvalue that lies within the unit circle:
SelectFirst[Eigenvalues[RandomReal[1, {5, 5}]], Abs[#] < 1&]Find the first built-in Wolfram Language object whose name is at least 36 characters long:
SelectFirst[Names["*"], StringLength[#] >= 36&]Select the first numeric quantity from a product:
SelectFirst[z^4 π^2 x^2 y^2, NumericQ]Find the position of the first prime in a random sample from a PoissonDistribution:
SelectFirst[RandomVariate[PoissonDistribution[100], 10 ^ 3], PrimeQ -> "Index"]Find the distribution of positions of first primes:
sample = Table[SelectFirst[RandomVariate[PoissonDistribution[100], 10 ^ 3], PrimeQ -> "Index"], 10 ^ 4];Histogram[sample, Automatic, PDF]FindDistribution[sample]Properties & Relations (4)
The default value is only evaluated if needed:
SelectFirst[{1015177, "Junk", EndOfFile}, PrimeQ,
Print["CriticalError"];$Failed]SelectFirst[{1015177, 2015177, 3015177}, PrimeQ,
Print["CriticalError"];$Failed]SelectFirst returns only the first match:
SelectFirst[{"1", a, Pi, Sqrt[2], E}, NumericQ]Select returns all matches:
Select[{"1", a, Pi, Sqrt[2], E}, NumericQ]SelectFirst can be implemented with a combination of Select and Replace:
SelectFirst[{"1", a, Pi, Sqrt[2], E}, NumericQ]
SelectFirst[{"1", a, Pi, Sqrt[2], E}, PrimeQ]Replace[Select[{"1", a, Pi, Sqrt[2], E}, NumericQ], {{} :> Missing["NotFound"], l_ :> First[l]}]
Replace[Select[{"1", a, Pi, Sqrt[2], E}, PrimeQ], {{} :> Missing["NotFound"], l_ :> First[l]}]SelectFirst is similar to FirstCase except that it uses a function instead of a pattern:
data = <|a -> {3, 7}, b -> {7, 4}, c -> {3, 5}, d -> {6, 4}|>;Select the first list that has a sum of elements less than 10:
f = Total[#] < 10&;SelectFirst[data, f]Use FirstCase to get the same result:
FirstCase[data, x_ /; f[x]]See Also
Select FirstCase FirstPosition First Take Drop Reap Pick GatherBy GroupBy MatchQ StringMatchQ FreeQ
Function Repository: SelectFirstBy SelectFirstIndex
Related Guides
Text
Wolfram Research (2014), SelectFirst, Wolfram Language function, https://reference.wolfram.com/language/ref/SelectFirst.html (updated 2025).
CMS
Wolfram Language. 2014. "SelectFirst." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2025. https://reference.wolfram.com/language/ref/SelectFirst.html.
APA
Wolfram Language. (2014). SelectFirst. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/SelectFirst.html
BibTeX
@misc{reference.wolfram_2026_selectfirst, author="Wolfram Research", title="{SelectFirst}", year="2025", howpublished="\url{https://reference.wolfram.com/language/ref/SelectFirst.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_selectfirst, organization={Wolfram Research}, title={SelectFirst}, year={2025}, url={https://reference.wolfram.com/language/ref/SelectFirst.html}, note=[Accessed: 12-June-2026]}