正如其他人所指出的那样,为此您将获得的最佳算法是O(log N),而不是O(1),并且在二等分搜索中通过排序列表进行搜索。
在Python中最简单的方法是使用
bisect标准模块http://docs.python.org/library/bisect.html。请特别注意,在第8.5.2节中的示例中,进行数字表查找-
正是您正在执行的 *** 作:
>>> def grade(score, breakpoints=[60, 70, 80, 90], grades='FDCBA'):... i = bisect(breakpoints, score)... return grades[i]...>>> [grade(score) for score in [33, 99, 77, 70, 89, 90, 100]]['F', 'A', 'C', 'C', 'B', 'A', 'A']
将
grades字符串替换为函数列表,将
breakpoints列表替换为较低阈值列表,然后就可以了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)