itertools.cycle()旁边。()?

时间:2011-03-08 20:00:51

标签: python-3.x cycle next itertools

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

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

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

提前谢谢。

2 个答案:

答案 0 :(得分:57)

在python 3中删除了

iter.next()。请改用next(iter)。因此,在您的示例中,将itertools.cycle().next()更改为next(itertools.cycle())

有一个good example here以及其他各种移植到python 3提示。它还比较了python 2.x与python 3.x

中的各种其他next()习语

答案 1 :(得分:17)

在Python 3.x中,迭代器不再有it.next()。请改用next(it),这也适用于Python 2.6或更高版本。在内部,这将调用Python 2.x中的it.next()和Python 3.x中的it.__next__()