首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么不让所有的迭代器都有自己的多遍迭代器呢?

为什么不让所有的迭代器都有自己的多遍迭代器呢?
EN

Stack Overflow用户
提问于 2020-04-29 14:17:25
回答 1查看 96关注 0票数 0

我刚接触Python,但我对Python中的迭代器和迭代器的理解是它们支持迭代器协议。

在一些迭代工具/上下文中,迭代器被传递给iter()以返回迭代器。然后,连续调用next()以生成所有项,直到next()引发StopIteration异常。

迭代器只支持一次迭代,而不是自己的迭代器的迭代器将支持多次迭代。

似乎取消了迭代器和迭代器之间的区别,让所有的迭代器都有自己的多遍迭代器,这样会更干净。

在迭代器协议中分离迭代器和迭代器的好处/逻辑是什么?

EN

回答 1

Stack Overflow用户

发布于 2020-04-29 14:35:10

iterable表示可以对对象进行迭代。通常,这意味着可以在实例上调用iter()来获得迭代器。

iterator是一个迭代的对象。它们也是可迭代的,这意味着可以在iter()和return...themselves中调用它们。通过对其调用next(),迭代器返回序列中的下一个对象。

很简单:所有的迭代器和迭代器在用iter()调用时都会给出一个迭代器。当使用next()调用时,所有迭代器都会给出序列中的下一个元素。

迭代器是单遍的,因为它使程序员的工作变得更容易。这可以作为迭代器传递:(x*3 for x in range(10))

也可以这样做:

代码语言:javascript
运行
复制
__iter__(self):
    for x in range(10):
        yield x*3

如果它们必须是多通道的,那么每个都必须在另一个循环中进行编程,这会给迭代器的程序员增加更多的工作。

如果你想再次传递,当迭代器用完要返回的元素时,从迭代器中获取一个新的迭代器。:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61495397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档