Я задаюсь почему следующая ситуация может возникнуть:IndexError: список индексов вне диапазона, но я «знаю» это
У меня есть список:
all_hits = list1 + list2
length_hits = len(all_hits)
i = 0
while i < int(length_hits) - 1:
if len((all_hits[i])[1]) >=3:
Do x
else:
Do y
Это дает мне ошибку :
File "file.py", line z, in Function:
if len((all_hits[i])[1]) >= 3:
IndexError: list index out of range
до сих пор:
- Если я напишу каждый
all_hits[i][1]
, который длится> = 3 символа в файл, я получаю около 18 000 записей, но если я напечатаюlen(all_hits)
, то ответ будет 39 000 элементов. - Я могу напечатать запись
all_hits[-1]
и она не соответствует окончательной записи в письменном списке.
Насколько я вижу, я не изменяю первоначальный список.
Почему? У меня было 2 дня на эту проблему, и это сводит меня с ума.
Редактировать: 3. Я напечатал заключительную запись и несколько после/до нее, чтобы убедиться, что у них есть правильное количество элементов, и все выглядит нормально.
Редактировать и поблагодарить:
Спасибо всем. Вы, конечно, были правы. Одна из моих записей имела, из ниоткуда, только один объект списка. Я не знаю, как и почему, но это совсем другой чай из рыбы!
Благодарим за помощь!
Вы считаете, что внутренний список имеет как минимум два элемента '[1]'. Проверьте это. –
Вы не тестировали, если 'all_hits [i]' содержит не менее 2 записей. –
Спасибо за ваши комментарии. Я напечатал окончательную запись, которая будет записывать файл, и имеет две записи. Это похоже на «другие» записи. – poppyseeds