python-3.xpython-itertoolscycle

itertools.cycle().next()?


Well, I was using itertools.cycle().next() method with Python 2.6.6, but now that I updated to 3.2 I noticed that itertools.cycle() object has no method next().

I used it to cycle a string in the spin()method of a Spinner class. So if we cycle the tuple ('|', '/', '-', '\\', '|', '/', '-'), it'll print: |, /, -, \ , |, /, -, |, / and so on...

I've searched the release notes of Python 3.0, 3.1 and 3.2 and didn't noticed any change on this. When this have changed? Is there any simple alternative to achieve the same functionality as before?

Thank you in advance.


Solution

  • iter.next() was removed in python 3. Use next(iter) instead. So in your example change itertools.cycle().next() to next(itertools.cycle())

    There is a good example here along with various other porting to python 3 tips. It also compares various other next() idioms in python 2.x vs python 3.x