文章插图
该bisect模块实现了一种算法 。用于将元素插入列表 。同时按排序顺序维护列表 。
以排序顺序插入这就是一个简单的示例 。insort()用于按排序顺序将项目插入列表 。
bisect_example.py
import bisect# A series of random numbersvalues = [14, 85, 77, 26, 50, 45, 66, 79, 10, 3, 84, 77, 1]print('New Pos Contents')print('--- --- --------')l = []for i in values: position = bisect.bisect(l, i) bisect.insort(l, i) print('{:3} {:3}'.format(i, position), l)输出的第一列显示新的随机数 。第二列显示数字将插入列表的位置 。每行的其余部分是目前排序列表 。
$ python3 bisect_example.pyNew Pos Contents--- --- -------- 14 0 [14] 85 1 [14, 85] 77 1 [14, 77, 85] 26 1 [14, 26, 77, 85] 50 2 [14, 26, 50, 77, 85] 45 2 [14, 26, 45, 50, 77, 85] 66 4 [14, 26, 45, 50, 66, 77, 85] 79 6 [14, 26, 45, 50, 66, 77, 79, 85] 10 0 [10, 14, 26, 45, 50, 66, 77, 79, 85] 3 0 [3, 10, 14, 26, 45, 50, 66, 77, 79, 85] 84 9 [3, 10, 14, 26, 45, 50, 66, 77, 79, 84, 85] 77 8 [3, 10, 14, 26, 45, 50, 66, 77, 77, 79, 84, 85] 1 0 [1, 3, 10, 14, 26, 45, 50, 66, 77, 77, 79, 84, 85]这就是一个简单的例子 。事实上 。考虑到被操纵的数据量 。简单地构建列表然后对其进行一次排序可能会更快 。相比之下 。对于长列表 。使用诸如此类的插入排序算法可以实现显着的期间和存放器节省 。尤其是当比较列表的两个成员的操作需要昂贵的计算时 。
处理重复先前显示的结果集包括重复值 。77 。该 bisect模块提供了两种处理重复的方法:可以将新值插入现有值的左侧 。也完全可以插入右侧 。该insort()函数说实话是一个别名 insort_right() 。它在现有值之后插入一个项目 。相应的函数insort_left()在现有值之前插入一个项 。
bisect_example2.py
import bisect# A series of random numbersvalues = [14, 85, 77, 26, 50, 45, 66, 79, 10, 3, 84, 77, 1]print('New Pos Contents')print('--- --- --------')# Use bisect_left and insort_left.l = []for i in values: position = bisect.bisect_left(l, i) bisect.insort_left(l, i) print('{:3} {:3}'.format(i, position), l)当使用bisect_left()和 操作相同的数据时insort_left() 。结果是相同的排序列表 。但插入位置对于重复值是不同的 。
【bisect是什么意思 bis是指什么识别系统】$ python3 bisect_example2.pyNew Pos Contents--- --- -------- 14 0 [14] 85 1 [14, 85] 77 1 [14, 77, 85] 26 1 [14, 26, 77, 85] 50 2 [14, 26, 50, 77, 85] 45 2 [14, 26, 45, 50, 77, 85] 66 4 [14, 26, 45, 50, 66, 77, 85] 79 6 [14, 26, 45, 50, 66, 77, 79, 85] 10 0 [10, 14, 26, 45, 50, 66, 77, 79, 85] 3 0 [3, 10, 14, 26, 45, 50, 66, 77, 79, 85] 84 9 [3, 10, 14, 26, 45, 50, 66, 77, 79, 84, 85] 77 7 [3, 10, 14, 26, 45, 50, 66, 77, 77, 79, 84, 85] 1 0 [1, 3, 10, 14, 26, 45, 50, 66, 77, 77, 79, 84, 85]
推荐阅读
- 《三国演义》里有哪些故事比较精彩?
- 日本、俄罗斯、法国、中国,你想娶哪国女生做老婆?
- 《三国演义》中有哪些张冠李戴的故事?
- 三国有哪些少有人知的有意思的故事?
- 电脑哪个加速器好用而且免费 2款免费无限制加速器推荐
- 世界上真的存在倾国倾城、令男人当场惊呆失态的美女吗?
- 赵云在《三国演义》里都有什么经典故事?
- 一百多年前,外国王妃个个漂亮惊艳,大清皇妃为何惨不忍睹?
- 电脑管家wifi共享精灵不见了 教你手机怎么给电脑共享wifi密码