python bisect模块

bisect

二分法查找

>>>import bisect
>>>a=[1, 3, 2, 6, 5]
>>>a.sort()
[1, 2, 3, 5, 6]
>>>bisect.insort(a, 7)
[1, 2, 3, 5, 6, 7]        

这个模块主要是用于查找和插入,当一个数组有序时, 出入一个数之后数组仍然是有序的,这里面的> 制就是按照二分法查找,找到要插入的index,然后a.insert(index, x)
源码在http://hg.python.org/cpython/file/2.7/Lib/bisect.py

用法

>>> data = [('red', 5), ('blue', 1), ('yellow', 8), ('black', 0)]
>>> data.sort(key=lambda r: r[1])
>>> keys = [r[1] for r in data]         # precomputed list of keys
>>> data[bisect_left(keys, 0)]
('black', 0)    
>>> data[bisect_left(keys, 1)]
('blue', 1)
>>> data[bisect_left(keys, 5)]
('red', 5)
>>> data[bisect_left(keys, 8)]
('yellow', 8)

官方文档: http://docs.python.org/2/library/bisect.html

你可能感兴趣的:(python bisect模块)