Tag: 二分法

Python中的二进制search(二分)

是否有库函数在列表/元组上执行二进制search,如果find则返回项目的位置,如果不是,则返回“False”(-1,None等)? 我在bisect模块中find了函数bisect_left / right,但是即使项目不在列表中,它们仍然会返回一个位置。 这对他们的预期用法是完全正确的,但我只想知道一个项目是否在列表中(不要插入任何东西)。 我想使用bisect_left ,然后检查该位置上的项目是否与我正在search的项目相同,但看起来很麻烦(而且我还需要进行界限检查,如果该数字可能大于我列表中的最大数字) 。 如果有更好的方法,我想知道它。 编辑为了澄清我需要这个:我知道一个字典将非常适合这个,但我试图保持尽可能低的内存消耗。 我的预期用法是一种双向查找表。 我在表中列出了一个值列表,我需要能够根据它们的索引访问值。 而且我也希望能够find一个特定值的索引,或者如果该值不在列表中,则为无。 使用字典这将是最快的方式,但会(大约)两倍的内存要求。 我在问这个问题,认为我可能忽略了Python库中的某些东西。 Moebuild议,似乎我必须写我自己的代码。