Skip to content

SplitBy ​

Split a list into runs on which a function is constant.

✓ checked against that system · ! checked, with disagreements (hover a chip)Wolfram LanguageSplitBy✓
SplitBy(list, f)runs on which f(element)f(element) stays the same.
Typed signatures
TypePackageApplies
(indexed_collection<T>, (T) any -> any) -> list<list<T>> where Tcombinatoricsalways

Domain: Collections

Details
  • Split with the adjacency test "same ff value" instead of plain equality.

Examples

Basic #

Runs of the same parity

live ↗
InSplitBy([1,3,5,2,4,7,9],_1⁡↦_1⁡ mod 2)\mathrm{SplitBy}(\bigl\lbrack1, 3, 5, 2, 4, 7, 9\bigr\rbrack, \operatorname{\_1}↦\operatorname{\_1}\bmod2)Out[[1,3,5],[2,4],[7,9]]\bigl\lbrack\bigl\lbrack1, 3, 5\bigr\rbrack, \bigl\lbrack2, 4\bigr\rbrack, \bigl\lbrack7, 9\bigr\rbrack\bigr\rbrack

Runs with the same value of ⌊x/4⌋\lfloor x/4 \rfloor

live ↗
InSplitBy([1,2,3,4,5,6,7,8,9,10],_1⁡↦⌊_1⁡4⌋)\mathrm{SplitBy}(\bigl\lbrack1, 2, 3, 4, 5, 6, 7, 8, 9, 10\bigr\rbrack, \operatorname{\_1}↦\lfloor\frac{\operatorname{\_1}}{4}\rfloor)Out[[1,2,3],[4,5,6,7],[8,9,10]]\bigl\lbrack\bigl\lbrack1, 2, 3\bigr\rbrack, \bigl\lbrack4, 5, 6, 7\bigr\rbrack, \bigl\lbrack8, 9, 10\bigr\rbrack\bigr\rbrack

Groups consecutive values sharing an integer part

live ↗
InSplitBy(1..(1+12)..5,IntegerPart)\mathrm{SplitBy}(1..(1+\frac{1}{2})..5, \mathrm{IntegerPart})Out[[1,32],[2,52],[3,72],[4,92],[5]]\bigl\lbrack\bigl\lbrack1, \frac{3}{2}\bigr\rbrack, \bigl\lbrack2, \frac{5}{2}\bigr\rbrack, \bigl\lbrack3, \frac{7}{2}\bigr\rbrack, \bigl\lbrack4, \frac{9}{2}\bigr\rbrack, \bigl\lbrack5\bigr\rbrack\bigr\rbrack
Applications #

Splits wherever the sign value changes

live ↗
InSplitBy([3,0,−4,3,3,−2,0,−3,−4,5],Sign)\mathrm{SplitBy}(\bigl\lbrack3, 0, -4, 3, 3, -2, 0, -3, -4, 5\bigr\rbrack, \mathrm{Sign})Out[[3],[0],[−4],[3,3],[−2],[0],[−3,−4],[5]]\bigl\lbrack\bigl\lbrack3\bigr\rbrack, \bigl\lbrack0\bigr\rbrack, \bigl\lbrack-4\bigr\rbrack, \bigl\lbrack3, 3\bigr\rbrack, \bigl\lbrack-2\bigr\rbrack, \bigl\lbrack0\bigr\rbrack, \bigl\lbrack-3, -4\bigr\rbrack, \bigl\lbrack5\bigr\rbrack\bigr\rbrack
About
Examples4
Checked againstWolfram Language 4 agree
CrosswalkWolfram Language

See also: Split, GatherBy