46

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

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

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

先感谢您。

4

2 回答 2

70

iter.next()在 python 3 中被删除。next(iter)改为使用。因此,在您的示例中更改itertools.cycle().next()next(itertools.cycle())

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

于 2011-03-08T20:04:52.127 回答
17

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

于 2011-03-08T20:02:30.417 回答