欢迎光临
我们一直在努力

bisect BU是什么意思

以排序顺序插入

这就是一个简单的示例。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()。结果是相同的排序列表。但插入位置对于重复值是不同的。

赞(0)
未经允许不得转载:bek58 » bisect BU是什么意思
分享到: 更多 (0)