バイセクトモジュールの役割

1.bisectソートされたシーケンスを処理するため、つまり、ソートされた昇順シーケンスを維持するために使用されます。

ソースではbisect.pyファイルは、structure次のとおりです。insortbisectinsort_rightinsort_leftbisect_rightbisect_left挿入操作と検索操作を大まかに実装します(2点使用)。

import bisect
#二分查找
inter_list = []
bisect.insort(inter_list, 3)
bisect.insort(inter_list, 2)
bisect.insort(inter_list, 5)
bisect.insort(inter_list, 1)
bisect.insort(inter_list, 6)

print(inter_list) # [1,2,3,5,6]

返されるのは完全なソートシーケンスであることがわかります。

次に、新しいデータを挿入して、シーケンス内でのその位置を見つけます。

# [1, 2, 3, 5, 6]
print(bisect.bisect(inter_list, 3))
# 3 
# 在序列下标为3的位置插入

ソースコードのbisectデフォルトはbisect_rightメソッドです。つまり、繰り返される要素の次の位置です。

bisect_left繰り返される要素の前の位置に挿入されます。

# [1, 2, 3, 5, 6]
print(bisect.bisect_left(inter_list, 3))
# 2

2.サブセクション

最初inter_list = []定義されたのは単なるリストではなく、変更可能な任意のシーケンスタイプが実際に機能します。たとえば、両端キュー。

import bisect
from collections import deque

inter_list = deque()

bisect.insort(inter_list, 3)
bisect.insort(inter_list, 2)
bisect.insort(inter_list, 5)
bisect.insort(inter_list, 1)
bisect.insort(inter_list, 6)

print(bisect.bisect_left(inter_list, 3))
print(inter_list)

# 2
# deque([1, 2, 3, 5, 6])

おすすめ

転載: blog.csdn.net/weixin_43901214/article/details/106978866