itertools.cycle().next()?
好吧,我在 Python 2.6.6 中使用了 itertools.cycle().next()
方法,但现在我更新到了 3.2,我注意到 itertools.cycle()
对象没有方法 next()
。
我用它在 Spinner
类的 spin()
方法中循环字符串。因此,如果我们循环元组 ('|', '/', '-', '\\', '|', '/', '-')
,它将打印: <代码>|、<代码>/、<代码>-、<代码>\、<代码>|、<代码>/、-
、|
、/
等等...
我搜索了 Python 3.0、3.1 和 3.2 的发行说明,没有注意到这有任何变化。这一切什么时候改变了?是否有任何简单的替代方案可以实现与以前相同的功能?
先感谢您。
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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 Python 3.x 中,迭代器不再具有
it.next()
。使用next(it)
代替,它也适用于 Python 2.6 或更高版本。在内部,这将在 Python 2.x 中调用it.next()
,在 Python 3.x 中调用it.__next__()
。In Python 3.x, iterators don't have
it.next()
any more. usenext(it)
instead, which also works in Python 2.6 or above. Internally, this will callit.next()
in Python 2.x andit.__next__()
in Python 3.x.iter.next()
在 python 3 中被删除。请使用next(iter)
代替。因此,在您的示例中将itertools.cycle().next()
更改为next(itertools.cycle())
有一个 这里是一个很好的例子以及各种其他移植到 python 3 的技巧。它还比较了 python 2.x 与 python 3.x 中的各种其他
next()
习惯用法iter.next()
was removed in python 3. Usenext(iter)
instead. So in your example changeitertools.cycle().next()
tonext(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