我有一个排序列表
my_list = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384]
我有一个值可以说是445.我想在列表中找到第一个最大值的索引。对于上面的情况,它应该返回索引值9(512)。
答案 0 :(得分:4)
最简单的方法是使用二进制搜索来查找所需的索引,因为输入列表已排序。该算法已在bisect
模块中实现:
import bisect
my_list = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384]
print(bisect.bisect_right(my_list, 445))
print(bisect.bisect_right(my_list, 512))
打印:
9
10