Выполнение:
r = r+3
не будет работать, как ожидалось, поскольку r
присваивается значение только возвращенного итератора, а не сам итератора. Чтобы продвинуть итератор, вам нужно позвонить next
.
Вы можете сделать это первым сохранение итератор в переменной и перекручивание над этим:
it = iter(range(0,10))
for r in it:
Это позволит затем вызвать next
на него внутри цикла:
it = iter(range(0,10))
for r in it:
if(r==0):
print (0)
print (1)
print (2)
for _ in range(3): # Advance the iterator by 3.
next(it)
else:
print(r)
Примечание однако, как сказал @StevenRumbalski, вызывая next
на пустом итераторе, поднимет исключение StopIteration
. Иногда такое поведение желательно, но если нет, то вы можете указать значение по умолчанию для возврата:
next(it, None)
Это позволит эффективно сделать линию не-оп.
почему бы вам не ожидать 0 - 13? –
Что вы ожидаете от вывода? –
0-9, но печать 0-9 не является проблемой, изменяя итератор. –