OrderingBy

OrderingBy[list,f]

gives the positions in list at which each successive element of SortBy[list,f] appears.

OrderingBy[list,f,n]

gives the positions in list at which the first n elements of SortBy[list,f] appear.

OrderingBy[list,f,-n]

gives the positions of the last n elements of SortBy[list,f].

OrderingBy[list,f,n,p]

gives positions in list of elements of SortBy[list,f,p].

Details

  • list[[OrderingBy[list,f]]] is the same as SortBy[list,f].
  • OrderingBy[list,f,seq] is equivalent to Take[OrderingBy[list,f],seq].
  • OrderingBy[list,f,All,p] gives the position at which all elements of list appear in SortBy[list,f,p].
  • OrderingBy can be used on expressions with any head, not only List.

Examples

open allclose all

Basic Examples  (3)

Find the ordering that sorts a list of strings by their length:

Apply the ordering:

Check that their string lengths are sorted:

Find the positions of the 3 smallest elements by absolute value:

Find the positions of the 3 largest elements by absolute value:

Find the ordering of values in an association:

Scope  (2)

Find the positions of the 3 shortest strings:

Find the positions of the 3 longest strings by ordering according to decreasing lengths:

Find the positions of the smallest to largest complex numbers by modulus:

Using canonical sorts them in a different way:

Introduced in 2019
 (12.0)