Подтвердить что ты не робот

Itertools.cycle(). Следующий()?

Ну, я использовал метод itertools.cycle().next() с Python 2.6.6, но теперь, когда я обновился до 3.2, я заметил, что объект itertools.cycle() не имеет метода next().

Я использовал его для цикла строки в методе spin() класса Spinner. Поэтому, если мы зацикливаем кортеж ('|', '/', '-', '\\', '|', '/', '-'), он будет печатать: |, /, -, \, |, /, -, |, / и так далее...

Я искал заметки о выпуске Python 3.0, 3.1 и 3.2 и не заметил никаких изменений в этом. Когда это изменилось? Есть ли простая альтернатива для достижения той же функциональности, что и раньше?

Спасибо заранее.

4b9b3361

Ответ 1

iter.next() был удален в python 3. Вместо этого используйте next(iter). Поэтому в вашем примере измените itertools.cycle().next() на next(itertools.cycle())

Существует хороший пример здесь, а также различные другие портирования на советы python 3. Он также сравнивает различные другие идиомы next() в python 2.x vs python 3.x

Ответ 2

В Python 3.x итераторы уже не имеют it.next(). используйте next(it) вместо этого, который также работает в Python 2.6 или выше. Внутри это вызовет it.next() в Python 2.x и it.__next__() в Python 3.x.