Если вы прочитаете документацию о for
, вы увидите, что
Список выражений вычисляется один раз
Это означает range(len(arr))
будет оцениваться один раз перед первой итерацией, а затем никогда больше.Это означает, что изменения, которые вы вносите в arr
, не будут замечены будущими итерациями цикла.
Вам понадобится другой способ перебора по arr
, возможно, while
цикла.Или добавьте проверку, чтобы убедиться, что i
не выходит за пределы.