我刚接触Python,但我对Python中的迭代器和迭代器的理解是它们支持迭代器协议。
在一些迭代工具/上下文中,迭代器被传递给iter()
以返回迭代器。然后,连续调用next()
以生成所有项,直到next()
引发StopIteration
异常。
迭代器只支持一次迭代,而不是自己的迭代器的迭代器将支持多次迭代。
似乎取消了迭代器和迭代器之间的区别,让所有的迭代器都有自己的多遍迭代器,这样会更干净。
在迭代器协议中分离迭代器和迭代器的好处/逻辑是什么?
发布于 2020-04-29 14:35:10
iterable表示可以对对象进行迭代。通常,这意味着可以在实例上调用iter()来获得迭代器。
iterator是一个迭代的对象。它们也是可迭代的,这意味着可以在iter()和return...themselves中调用它们。通过对其调用next(),迭代器返回序列中的下一个对象。
很简单:所有的迭代器和迭代器在用iter()调用时都会给出一个迭代器。当使用next()调用时,所有迭代器都会给出序列中的下一个元素。
迭代器是单遍的,因为它使程序员的工作变得更容易。这可以作为迭代器传递:(x*3 for x in range(10))
也可以这样做:
__iter__(self):
for x in range(10):
yield x*3
如果它们必须是多通道的,那么每个都必须在另一个循环中进行编程,这会给迭代器的程序员增加更多的工作。
如果你想再次传递,当迭代器用完要返回的元素时,从迭代器中获取一个新的迭代器。:)
https://stackoverflow.com/questions/61495397
复制相似问题