27.15 Position

Position( list, elm ) Position( list, elm, after )

Position returns the position of the element elm, which may be an object of any type, in the list list. If the element is not in the list the result is false. If the element appears several times, the first position is returned.

The three argument form begins the search at position after+1, and returns the position of the next occurence of elm. If there are no more, it returns false.

It is much faster to search for an element in a set, because for sets, which are always sorted (see Sets), Position can use a binary search, instead of the linear search used for ordinary lists. So if you have a list for which you want to perform a large number of searches you may consider converting it to a set with the function Set (see Set).

    gap> Position( [ 2, 2, 1, 3 ],  1 );
    3
    gap> Position( [ 2, 1, 1, 3 ], 1 );
    2
    gap> Position( [ 2, 1, 1, 3 ], 1, 2 );
    3
    gap> Position( [ 2, 1, 1, 3 ], 1, 3 );
    false
    gap> Position( [ 4, -1, 0, 3 ],  1 );
    false
    gap> s := Set([2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32]);;
    gap> Position( s,  17 );
    false        # uses binary search and only 4 comparisons
    gap> Position( [ "This", "is", "a", "list", "of", "strings" ],  1 );
    false
    gap> Position( [ [0,6], [0,4], [1,3], [1,5], [1,2], [3,4] ],  [1,2] );
    5 

The in operator (see In) can be used if you are only interested to know whether the element is in the list or not. PositionSorted (see PositionSorted) can be used if the list is sorted. PositionProperty (see PositionProperty) allows you to find the position of an element that satisfies a certain property in a list.

Previous Up Top Next
Index

GAP 3.4.4
April 1997