В основном, эта строка:
if not maximum_score_index or **search_list[idx]** > search_list[maximum_score_index]:
maximum_score_index = **idx**
Можно рассматривать как:
if (this is the first pass) or (element at index > this loop-iteration element):
keep this index as largest element
Что я рекомендую сделать:
Вы ищете индекс самого высокого элемента в списке или значение? Если вы ищете значение, оно может быть простым:
highest = max(search_list)
Вы также можете использовать enumerate
, что предоставит вам «свободный» доступ к текущему индексу в цикле: [1112 ]
>>> search_list
[10, 15, 5, 3]
>>> maximum_score_index = None
>>> for idx, value in enumerate(search_list):
... if not maximum_score_index or search_list[idx] > value:
... maximum_score_index = idx
...
>>> maximum_score_index
1
>>> search_list[maximum_score_index]
15
Вы могли сделать это с помощью ползунка jQuery путем сцепления в событие слайда (эффективно переопределяющий его)... Что-то вроде этого:
$(function() {
var values = [0, 10, 50, 60, 70, 80, 90, 91, 92, 93, 94, 95, 100];
var slider = $("#slider").slider({
slide: function(event, ui) {
var includeLeft = event.keyCode != $.ui.keyCode.RIGHT;
var includeRight = event.keyCode != $.ui.keyCode.LEFT;
slider.slider('option', 'value', findNearest(includeLeft, includeRight, ui.value));
return false;
}
});
function findNearest(includeLeft, includeRight, value) {
var nearest = null;
var diff = null;
for (var i = 0; i < values.length; i++) {
if ((includeLeft && values[i] <= value) || (includeRight && values[i] >= value)) {
var newDiff = Math.abs(value - values[i]);
if (diff == null || newDiff < diff) {
nearest = values[i];
diff = newDiff;
}
}
}
return nearest;
}
});
Должен работать на то, что Вы описываете... Я протестировал его на перетаскивание с мышью и левые/правильные/домашние/клавиши End использование (очевидно, необходимо было бы измениться слева/справа на/вниз, если Вы хотите вертикальный ползунок).
Некоторые примечания:
Надежда, которая помогает.