Алгоритмы. Python. 2 больших списка, проставить индексы соответствия
Пишу на Python Есть 2 списка. Один статический, находится в таблице Excel. Второй список парсится с сайта, парсятся уникальные номера товаров, вида "3593893".
На данный момент я сначала нахожу все уникальные номера на сайте (Порядка 3000 штук). Засовываю их в список. Затем засовываю во второй список все номера из Excel.
И мне нужно найти в какой строке в таблице Excel находится одинаковый номер из первого списка. Из-за того что строк порядка 3000, то моя конструкция работает очень долго, больше часа. Я использую что-то вроде:
for i in range(0, len(ids)):
if ids[i] in codes_data:
j = codes_data.index(ids[i])
#"заполняю строку остальными данными"
Правильно ли я понимаю что программа в данном случае просматривает список "codes_data" дважды?
Первый раз в if ids[i] in codes_data
Второй раз в codes_data.index(ids[i])
Если это так, то корректно ли сделать:
for i in range(0, len(ids)):
try:
j = codes_data.index(ids[i])
#"заполняю строку остальными данными"
except: pass
В таком случае получается список codes_data просматривается один раз и программа будет работать быстрее и лучше?
Можно ли как-то ускорить нахождение индексов? Думал что как-то можно использовать сортировку, чтобы отталкиваться от неё, но не уверен что это самый простой и самый быстрый способ.
Обновление. Проблема была решена. Главная проблема как оказывается была в другом. Я слишком часто сохранял Excel файл, что тормозило работу программы. После того как я сделал отдельный файл для считывания и отдельный для записи, скорость стала молниеносной. Но я также смог улучшить и обработку списков благодаря ответам ниже, что еще больше улучшило пограмму. Спасибо.