itertools.cycle()旁边.()?

Pau*_*tas 40 cycle next python-itertools python-3.x

好吧,我使用itertools.cycle().next()Python 2.6.6的方法,但现在我更新到3.2我注意到itertools.cycle()对象没有方法next().

我用它在类的spin()方法中循环一个字符串Spinner.因此,如果我们循环元组('|', '/', '-', '\\', '|', '/', '-'),它会打印:|,/,-,\,|,/,-,|,/等...

我搜索了Python 3.0,3.1和3.2的发行说明,并没有发现任何变化.什么时候改变了?是否有任何简单的替代方案可以实现与以前相同的功能?

先感谢您.

小智 61

iter.next()已在python 3中删除.请next(iter)改用.所以在你的例子中itertools.cycle().next()改为next(itertools.cycle())

这里有一个很好的例子以及其他各种移植到python 3技巧.它还比较next()了python 2.x和python 3.x中的各种其他习语

  • 你回答的几乎和@Sven一样(嗯,我知道,它不会有什么不同),但你的链接保存了你的答案.我不知道http://diveintopython3.org/...已加入书签!感谢您的回答和链接.:) (2认同)

Sve*_*ach 17

在Python 3.x中,迭代器不再具有it.next().使用next(it)替代,也可以工作在Python 2.6或以上.在内部,这将调用it.next()Python 2.x和it.__next__()Python 3.x.