相关疑难解决方法(0)

Python中的二进制搜索(二分)

是否有一个库函数在列表/元组上执行二进制搜索并返回项目的位置(如果找到)和'False'(-1,None等),如果没有?

我在bisect模块中找到了函数bisect_left/right ,但即使该项不在列表中,它们仍会返回一个位置.这对于他们的预期用途来说非常好,但我只是想知道一个项目是否在列表中(不想插入任何内容).

我想过使用bisect_left然后检查那个位置的项目是否等于我正在搜索的项目,但这看起来很麻烦(我还需要检查边界是否可以大于我列表中的最大数字).如果有一个更好的方法我想知道它.

编辑为了澄清我需要这个:我知道字典非常适​​合这个,但我试图尽可能降低内存消耗.我的预期用法是一种双向查找表.我在表中有一个值列表,我需要能够根据它们的索引访问这些值.而且如果值不在列表中,我希望能够找到特定值的索引或None.

使用字典是最快的方法,但会(大约)加倍内存需求.

我在问这个问题,认为我可能忽略了Python库中的某些东西.正如Moe建议的那样,我似乎必须编写自己的代码.

python binary-search bisection

170
推荐指数
8
解决办法
17万
查看次数

python有排序列表吗?

我的意思是一个结构:

  • O(log n)x.push()操作的复杂性
  • O(log n)查找元素的复杂性
  • O(n)计算的复杂性list(x)将被排序

我还有一个关于性能的相关问题list(...).insert(...)现在在这里.

python sorting list

120
推荐指数
5
解决办法
8万
查看次数

标签 统计

python ×2

binary-search ×1

bisection ×1

list ×1

sorting ×1