2016-12-14 68 views
1

compraring的值的指數我有一個排序列表查找列表第一最大的蟒蛇

my_list = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384] 

我有一個值,可以說445,我想找到在列表中的第最大的指數。對於上面的情況,它應該返回索引值9(512)。

+0

1.你嘗試過什麼? 2.關於複雜性的任何要求? –

+1

使用'for i,v枚舉(my_list):'填充索引和值。 – ichbinblau

+0

最好避免循環。 – Shafiq

回答

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