您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在巨大列表中查找/搜索的最有效方法(python)

在巨大列表中查找/搜索的最有效方法(python)

不要创建一个list,请创建一个set。它会在固定时间内进行查找。

如果您不希望集合的内存开销,则保留一个排序列表,然后使用bisect模块进行搜索

from bisect import bisect_left
def bi_contains(lst, item):
    """ efficient `item in lst` for sorted lists """
    # if item is larger than the last its not in the list, but the bisect would 
    # find `len(lst)` as the index to insert, so check that first. Else, if the 
    # item is in the list then it has to be at index bisect_left(lst, item)
    return (item <= lst[-1]) and (lst[bisect_left(lst, item)] == item)
python 2022/1/1 18:49:27 有390人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶