Itertools.cycle(). Следующий()?
Ну, я использовал метод itertools.cycle().next()
с Python 2.6.6, но теперь, когда я обновился до 3.2, я заметил, что объект itertools.cycle()
не имеет метода next()
.
Я использовал его для цикла строки в методе spin()
класса Spinner
. Поэтому, если мы зацикливаем кортеж ('|', '/', '-', '\\', '|', '/', '-')
, он будет печатать: |
, /
, -
, \
, |
, /
, -
, |
, /
и так далее...
Я искал заметки о выпуске Python 3.0, 3.1 и 3.2 и не заметил никаких изменений в этом. Когда это изменилось? Есть ли простая альтернатива для достижения той же функциональности, что и раньше?
Спасибо заранее.
Ответы
Ответ 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.