好吧,我在Python 2.6.6中使用itertools.cycle().next()
方法,但现在我更新到3.2,我注意到itertools.cycle()
对象没有方法next()
。
我用它在spin()
类的Spinner
方法中循环一个字符串。因此,如果我们循环使用元组('|', '/', '-', '\\', '|', '/', '-')
,则会打印:|
,/
,-
,\
,|
,{{1 }},/
,-
,|
等等......
我搜索了Python 3.0,3.1和3.2的发行说明,并没有发现任何变化。什么时候改变了?是否有任何简单的替代方案可以实现与以前相同的功能?
提前谢谢。
答案 0 :(得分:57)
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__()
。