У меня есть фрагмент кода, который как-то терпит неудачу на следующей list.index
функции:Python индекс список странное поведение
for line in flines:
for match in bad_data_regex.findall(line):
assert line in flines
index = flines.index(line)
flines.pop(index)
# other code that does not modify flines ....
Мой код терпит неудачу на:
ScriptEngine.execute:Error in script Traceback (innermost last):
File "<string>", line 168, in ?
ValueError: list.index(x): x not in list
Если значение действительно не было в списке, я должен был получить AssertionError
перед функцией list.index
.
Я использую Jython 2.2.1 под Java версии 1.6.0_18.
Как это возможно?
EDIT:
Оказывается код, который генерировал эту ошибку не было то, что я писал выше. Мой интерпретатор Jython дал мне неправильный номер строки и оказался на линии с функцией индекса выше.
Вышеприведенный код действительно работает так, как я и предполагал, хотя я понимаю, что не рекомендуется переделывать список во время итерации по нему. Я постараюсь избежать этого, когда это возможно в будущем.
Спасибо за это. Оказывается, вышеприведенный код работает так, как предполагалось, но я буду воздерживаться от изменения того же списка, который я итерирую в будущем. –