python bisect模块二分法查找
生活随笔
收集整理的這篇文章主要介紹了
python bisect模块二分法查找
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#!/usr/bin/env python # encoding: utf-8 import bisect import sys #將一個元素插入到一個有序列表的合適位置 #使用這個模塊的函數前先確保操作的列表是已排序的。 list=[2,1,3,4,2,4,6,6,62,1] list.sort() new_list=bisect.insort(list,7)#后面的這個參數表示 元素7應該出現在列表的位置, left_list=bisect.insort_left(list,7)#后面的這個參數表示 元素7應該出現在列表的位置,如果重復插入在左邊 right_list=bisect.insort_right(list,7)#后面的這個參數表示 元素7應該出現在列表的位置,如果重復插入在右邊 left_postion=bisect.bisect_left(list,7) right_postion=bisect.bisect_right(list,7)#返回出現數字的右側位置,如果不存在則獲取應該插入到列表的右側位置(一般用于原列表有該數據的時候) # # print(list) #結果[1, 1, 2, 2, 3, 4, 4, 6, 6, 7, 62] # # print(new_list) #insort方法不會產生新的列表,輸出為None # print(left_list) #insort_left方法不會產生新的列表,輸出為None # print(right_list) #insort_left方法不會產生新的列表,輸出為None print(right_postion) # bisect_left 和 bisect_right 函數,該函數用入處理將會插入重復數值的情況,返回將會插入的位置
相當于下面的代碼
#!/usr/bin/env python
# encoding: utf-8
import math
#給定一個list用二分法查出現的位置,前提排好序了
def binary_search_loop(lst,value):
low,hight=0,len(lst)-1 #列表中元素的坐標
while low<=hight:
mid=math.floor((low+hight)/2) #向下取整
#如果中間這個數小于指定數字,則網上查找
if lst[mid]<value:
low=mid+1
elif lst[mid]>value:
hight=mid-1
else:
return mid
return None
print(binary_search_loop([1,2,3,4,5,6,7,8,9,11],8))
關于二分法查找的知識,點擊我
總結
以上是生活随笔為你收集整理的python bisect模块二分法查找的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黑色产业链-最明智的网站链接隐藏方法
- 下一篇: 关于如何使用javascript监听滚动