Open In App
Related Articles

# Binary Search (bisect) in Python

Binary Search is a technique used to search element in a sorted list. In this article, we will looking at library functions to do Binary Search.
Finding first occurrence of an element.

bisect.bisect_left(a, x, lo=0, hi=len(a)) : Returns leftmost insertion point of x in a sorted list. Last two parameters are optional, they are used to search in sublist.

## Python3

 `# Python code to demonstrate working``# of binary search in library``from` `bisect ``import` `bisect_left` `def` `BinarySearch(a, x):``    ``i ``=` `bisect_left(a, x)``    ``if` `i !``=` `len``(a) ``and` `a[i] ``=``=` `x:``        ``return` `i``    ``else``:``        ``return` `-``1` `a  ``=` `[``1``, ``2``, ``4``, ``4``, ``8``]``x ``=` `int``(``4``)``res ``=` `BinarySearch(a, x)``if` `res ``=``=` `-``1``:``    ``print``(x, "``is` `absent")``else``:``    ``print``("First occurrence of", x, "``is` `present at", res)`

Output:

`First occurrence of 4 is present at 2`

Finding greatest value smaller than x.

## Python3

 `# Python code to demonstrate working``# of binary search in library``from` `bisect ``import` `bisect_left` `def` `BinarySearch(a, x):``    ``i ``=` `bisect_left(a, x)``    ``if` `i:``        ``return` `(i``-``1``)``    ``else``:``        ``return` `-``1` `# Driver code``a  ``=` `[``1``, ``2``, ``4``, ``4``, ``8``]``x ``=` `int``(``7``)``res ``=` `BinarySearch(a, x)``if` `res ``=``=` `-``1``:``    ``print``("No value smaller than ", x)``else``:``    ``print``("Largest value smaller than ", x, " ``is` `at index ", res)`

Output:

`Largest value smaller than  7  is at index  3`

Finding rightmost occurrence

bisect.bisect_right(a, x, lo=0, hi=len(a)) Returns rightmost insertion point of x in a sorted list a. Last two parameters are optional, they are used to search in sublist.

## Python3

 `# Python code to demonstrate working``# of binary search in library``from` `bisect ``import` `bisect_right` `def` `BinarySearch(a, x):``    ``i ``=` `bisect_right(a, x)``    ``if` `i !``=` `0` `and` `a[i``-``1``] ``=``=` `x:``        ``return` `(i``-``1``)``    ``else``:``        ``return` `-``1` `a  ``=` `[``1``, ``2``, ``4``, ``4``]``x ``=` `int``(``4``)``res ``=` `BinarySearch(a, x)``if` `res ``=``=` `-``1``:``    ``print``(x, "``is` `absent")``else``:``    ``print``("Last occurrence of", x, "``is` `present at", res)`

Output:

`Last occurrence of 4 is present at 3`