В Python цикл не увеличивается i
, вместо этого он присваивает ему значения из итерируемого объекта (в данном случае, списка). Поэтому изменение i
внутри цикла for не «запутывает» цикл, поскольку на следующей итерации i
будет просто присвоено следующее значение.
В коде, который вы указали, когда i
равен 6, он уменьшается в цикле, поэтому он изменяется на 5 и затем печатается. На следующей итерации Python просто устанавливает его на следующее значение в списке [0,1,2,3,4,5,6,7,8,9]
, которое равно 7 и т. Д. Цикл завершается, когда больше нет значений для принятия.
Конечно, эффект, который вы получаете в предоставленном вами цикле C, все еще может быть достигнут в Python. Поскольку каждый цикл for является прославленным циклом while, в том смысле, что его можно преобразовать следующим образом:
for (init; condition; term) ...
Эквивалентно:
init
while(condition) {
...
term
}
Тогда ваш бесконечный цикл может быть записан на Python как:
i = 0
while i < 10:
if i > 5:
i -= 1
print i
i += 1