Python迭代器有has_next方法吗?


当前回答

不。最类似的概念很可能是StopIteration异常。

其他回答

你可以使用itertools来tee迭代器。在teed迭代器上检查StopIteration。

hasNext在某种程度上转换为StopIteration异常,例如:

>>> it = iter("hello")
>>> it.next()
'h'
>>> it.next()
'e'
>>> it.next()
'l'
>>> it.next()
'l'
>>> it.next()
'o'
>>> it.next()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

StopIteration文档:http://docs.python.org/library/exceptions.html#exceptions.StopIteration 一些关于python中的迭代器和生成器的文章:http://www.ibm.com/developerworks/library/l-pycon.html

不,没有这样的方法。迭代的结束由异常表示。请参见文档。

在任意迭代器对象中尝试__length_hint__()方法:

iter(...).__length_hint__() > 0

我相信python只有next(),根据文档,如果没有更多的元素,它就会抛出异常。

http://docs.python.org/library/stdtypes.html#iterator-types