Как сравнить число с элементами в списке?

У меня есть следующий код:

number_1 = 1234 #Например

list_number = [0, 10, 20, 30, 
            50, 55, 89, 150, 160, 
            170, 180, 200, 220, 260, 
            320, 340, 385, 420, 367,
            545, 578, 600, 605, 740,
            750, 844, 850, 940, 950,
            1000, 1052, 1106, 1150, 1200,
            1270, 1300, 1358, 1408, 1460,]

Я хочу, чтобы мне вывелся 1 элемент из упорядоченного списка, который будет меньше этого числа: Если number_1 = 1234, то будет 1200 и на вывод 33 элемент

Да, здесь можно циклом пройтись, но как быть, если у меня будет много элементов в списке? Может, какой-нибудь модуль есть?


Ответы (2 шт):

Автор решения: n1tr0xs

Самый простой способ:

i = -1
while i<len(list_number)-1:
    if list_number[i+1] >= number_1:
        break
    i += 1
print(list_number[i])

В Python 3.10 можно написать так:

i = -1
while (i:=i+1) < len(list_number)-1:
    if list_number[i+1] >= number_1:
        break 
print(list_number[i])

Есть еще такой способ, но его я бы не стал рекомендовать из-за долгого выполнения на больших объемах данных:

print(max(filter(lambda x: x<number_1, list_number)))
→ Ссылка
Автор решения: mazik7512

Да, здесь можно циклом пройтись, но как быть, если у меня будет много элементов в списке? Может, какой-нибудь модуль есть?

Модули в любом случае будут использовать циклы (просто скрывая их от вас).


Т.к. вы в комментариях вы указали, что список всегда будет отсортирован можно использовать немного модифицированный бинарный поиск для уменьшения кол-ва итераций.

→ Ссылка