第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Python中的二進(jìn)制搜索(二分法)

Python中的二進(jìn)制搜索(二分法)

Qyouu 2019-07-12 18:43:33
Python中的二進(jìn)制搜索(二分法)是否有一個(gè)庫函數(shù)可以對列表/元組執(zhí)行二進(jìn)制搜索,如果找到并返回項(xiàng)的位置和‘false’(-1,無,等等)如果不是?我在平分模,但即使項(xiàng)目不在列表中,它們?nèi)匀环祷匾粋€(gè)位置。對于它們的預(yù)期用途來說,這是非常好的,但我只想知道列表中是否有項(xiàng)目(不想插入任何內(nèi)容)。我想用bisect_left然后檢查位于該位置的項(xiàng)是否等于我正在搜索的內(nèi)容,但這似乎很麻煩(我還需要進(jìn)行邊界檢查,以檢查該數(shù)字是否可以大于我列表中最大的數(shù)字)。如果有更好的方法,我想知道。編輯為了澄清我需要它做什么:我知道字典將非常適合這一點(diǎn),但我正試圖盡可能地降低內(nèi)存消耗。我打算用的是一張雙向查表。表中有一個(gè)值列表,我需要能夠根據(jù)它們的索引訪問這些值。另外,我希望能夠找到某個(gè)特定值的索引,如果該值不在列表中,則為零。為此使用字典將是最快的方法,但將(大約)增加一倍的內(nèi)存需求。我在問這個(gè)問題時(shí)認(rèn)為,我可能忽略了Python庫中的一些內(nèi)容??磥砦业米约簩懘a了,就像Moe建議的那樣。
查看完整描述

3 回答

?
炎炎設(shè)計(jì)

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊

from bisect import bisect_leftdef binary_search(a, x, lo=0, hi=None):  # can't use a to specify default for hi
    hi = hi if hi is not None else len(a)  # hi defaults to len(a)   
    pos = bisect_left(a, x, lo, hi)  # find insertion position
    return (pos if pos != hi and a[pos] == x else -1)  # don't walk off the end



查看完整回答
反對 回復(fù) 2019-07-12
?
呼如林

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊

為什么不看一下二分法的代碼左/右,并調(diào)整它,以適應(yīng)您的目的。

就像這樣:

def binary_search(a, x, lo=0, hi=None):
    if hi is None:
        hi = len(a)
    while lo < hi:
        mid = (lo+hi)//2
        midval = a[mid]
        if midval < x:
            lo = mid+1
        elif midval > x: 
            hi = mid        else:
            return mid    return -1


查看完整回答
反對 回復(fù) 2019-07-12
  • 3 回答
  • 0 關(guān)注
  • 912 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)