itertools.cycle().next()?

Paulo Freitas picture Paulo Freitas · Mar 8, 2011 · Viewed 24.9k times · Source

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.

Answer

d0ugal picture d0ugal · Mar 8, 2011

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