1.bisect
ソートされたシーケンスを処理するため、つまり、ソートされた昇順シーケンスを維持するために使用されます。
ソースではbisect.py
ファイルは、structure
次のとおりです。insort
、bisect
、insort_right
、insort_left
、bisect_right
、bisect_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])