Как сравнить число с элементами в списке?
У меня есть следующий код:
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 шт):
Самый простой способ:
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)))
Да, здесь можно циклом пройтись, но как быть, если у меня будет много элементов в списке? Может, какой-нибудь модуль есть?
Модули в любом случае будут использовать циклы (просто скрывая их от вас).
Т.к. вы в комментариях вы указали, что список всегда будет отсортирован можно использовать немного модифицированный бинарный поиск для уменьшения кол-ва итераций.