Изменения счетчика цикла for
Можно ли в цикле for изменять значения счетчика? К примеру:
for i in range(10):
if(i==5):
i=8
Но при достижении i 5 значение на 8 не меняется. Начиная с новой итерации i, как и планировалось изначально, будет 6. Есть ли способы преодоления этого ограничения? Или только цикл while использовать для таких ситуаций?
Ответы (5 шт):
С помощью цикла for мы можем выполнить набор операторов один раз для каждого элемента в списке,
кортеже, и т.д.
С помощью оператора continue мы можем остановить текущую итерацию цикла и продолжить следующую:
for i in range(10):
if i == 5 or i == 6 or i == 7:
continue
print(i)
Можно использовать while вместо for:
i = 0
while i<10:
if i==5:
i = 8
# ваш код
i += 1
from itertools import chain
ranges = range(5), range(8, 10)
for i in chain.from_iterable(ranges):
print(i)
Саму переменную цикла менять без толку - на каждой новой итерации цикла for ей будет присвоено значение очередной итерации и все ваши изменения забудутся. Можно только пропустить какие-то значения с помощью continue, например, так:
for i in range(10):
if i in range(5, 8):
continue
Можно просто объединить интервалы:
print(*(i for i in list(range(5)) + list(range(8, 10))))
или так
for i in [*range(5),*range(8, 10)]:
print(i)
или так
from itertools import chain
for i in chain(range(5), range(8, 10)):
print(i)
... или
for i in set(range(10)).symmetric_difference(set(range(5,8))):
print(i, end=' ')