gpt4 book ai didi

python隐式二进制搜索

转载 作者:行者123 更新时间:2023-11-28 21:20:01 24 4
gpt4 key购买 nike

我有一个已经排序的列表。

我经常需要检查看看

if foo in sortedlist:
pass # not really. but not the point.

有没有一种方法可以教“in”排序列表已排序并且应该对列表进行二进制搜索?

最佳答案

Python 更喜欢显式而不是隐式。您的选择是显式使用 bisect module如果您知道数据已排序,或者创建 list 的子类,使用该模块实现 __contains__

例如:

import bisect


class SortedList(list):
def __contains__(self, elem):
idx = bisect.bisect_left(self, elem)
return idx < len(self) and self[idx] == elem

可以代替listin会自动使用__contains__。您可能还想覆盖 __setitem__.extend().append() 以按排序顺序维护列表。

关于python隐式二进制搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23577852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com