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]html

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

####用法####数组

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

相关文章
相关标签/搜索