มีฟังก์ชั่นห้องสมุดที่ดำเนินการค้นหาแบบไบนารีในรายการ / ทูเปิลและส่งคืนตำแหน่งของรายการหากพบและ 'เท็จ' (-1, ไม่มี, ฯลฯ ) ถ้าไม่?
ฉันพบฟังก์ชัน bisect_left / ขวาในโมดูล bisectแต่พวกเขายังคงส่งคืนตำแหน่งแม้ว่ารายการไม่ได้อยู่ในรายการ มันดีมากสำหรับการใช้งานที่ต้องการ แต่ฉันแค่อยากรู้ว่ารายการนั้นอยู่ในรายการหรือไม่ (ไม่ต้องการแทรกอะไร)
ฉันคิดว่าจะใช้bisect_left
แล้วตรวจสอบว่ารายการในตำแหน่งนั้นเท่ากับสิ่งที่ฉันกำลังค้นหาหรือไม่ แต่ดูเหมือนว่าจะยุ่งยาก (และฉันต้องทำการตรวจสอบอย่าง จำกัด หากจำนวนอาจมากกว่าจำนวนที่มากที่สุดในรายการของฉัน) หากมีวิธีที่ดีกว่าฉันต้องการทราบเกี่ยวกับมัน
แก้ไขเพื่อชี้แจงสิ่งที่ฉันต้องการสิ่งนี้สำหรับ: ฉันทราบว่าพจนานุกรมจะเหมาะมากสำหรับสิ่งนี้ แต่ฉันพยายามรักษาปริมาณการใช้หน่วยความจำให้ต่ำที่สุดเท่าที่จะทำได้ การใช้งานที่ฉันตั้งใจจะเป็นตารางค้นหาสองทาง ฉันมีรายการของค่าในตารางและฉันต้องสามารถเข้าถึงค่าตามดัชนีของพวกเขา และฉันต้องการหาดัชนีของค่าใดค่าหนึ่งหรือไม่มีถ้าค่านั้นไม่อยู่ในรายการ
การใช้พจนานุกรมสำหรับวิธีนี้จะเป็นวิธีที่เร็วที่สุด แต่จะ (ประมาณ) ความต้องการของหน่วยความจำเพิ่มขึ้นเป็นสองเท่า
ฉันถามคำถามนี้โดยคิดว่าฉันอาจมองข้ามบางอย่างในห้องสมุด Python ดูเหมือนว่าฉันจะต้องเขียนโค้ดของตัวเองตามที่ Moe แนะนำ
np.searchsorted
มีประโยชน์ docs.scipy.org/doc/numpy/reference/generated/…