# 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.

GAP 3.4.4
April 1997