我在python中有一个很大的(~10 6 )浮动列表,我重复调用if number in list
。列表不会改变。有没有办法加速这个过程,比如对列表进行排序,并利用它的排序?
答案 0 :(得分:0)
您应该将列表更改为设置(如果设置为常量,则更改为冻结设置)。
示例:
l = [1, 2, 3]
s = set(l) # frozenset(l)
obj in l # O(n) lookup
obj in s # O(1) lookup
答案 1 :(得分:0)
如果尝试计算两个选项的时间复杂度,see this handy reference.
答案 2 :(得分:0)
您可以将列表转换为一个集合,这可能会占用大量内存和计算时间(并且会删除重复项)。
或者您也可以使用模块bisect来利用您的列表已排序的事实。第一个搜索时间为O(1)
,第二个搜索时间为O(log(n))
。