Does python provide functions for performing binary search on sorted lists, analogous to the std::lower_bound and std::upper_bound algorithms of the C++ Standard Library?
            Asked
            
        
        
            Active
            
        
            Viewed 3.1k times
        
    57
            
            
         
    
    
        Leon
        
- 31,443
- 4
- 72
- 97
- 
                    See also: https://stackoverflow.com/questions/212358 – Karl Knechtel Jul 30 '22 at 01:30
2 Answers
79
            Those functions are located in the bisect module:
- bisect.bisect_left(a, x, lo=0, hi=len(a)) is the analog of - std::lower_bound().
- bisect.bisect_right(a, x, lo=0, hi=len(a)) is the analog of - std::upper_bound().
Note: there is also a function bisect() which is an alias for bisect_right().
 
    
    
        Leon
        
- 31,443
- 4
- 72
- 97
0
            
            
        There is also sortedcontainers package in python, which also has bisect_left and bisect_right. https://grantjenks.com/docs/sortedcontainers/sortedlist.html
This could be handy if you don't want to maintain the list sorted yourself (e.g. insertion).
 
    
    
        Mircea
        
- 954
- 1
- 13
- 17