【发布时间】:2019-02-07 15:51:07
【问题描述】:
我对迭代器和可迭代对象之间的区别有点困惑。我读了很多书,得到了这么多:
迭代器:在其类中具有__next__ 的对象。你可以调用 next() 。所有迭代器都是可迭代的。
Iterable:在其类中定义__iter__ 或__getitem__ 的对象。如果可以使用 iter() 构建迭代器,那么它就是可迭代的。并非所有可迭代对象都是迭代器。
some_dict.items() 是迭代器吗?我知道some_dict.iteritems() 会在 Python2 中,对吧?
我只是在检查,因为我正在做的一门课程说它是,而且我很确定它只是一个可迭代的(不是迭代器)。
感谢您的帮助:)
【问题讨论】:
-
@ytu 并不是真正的重复 IMO,无论如何,接受的答案不正确解决了这个问题的细节。
-
@juanpa.arrivillaga 我知道接受的答案不正确。那里的讨论仍然涵盖了很多内容,足以在这里解决这个问题。
-
@zvone 但是你不能在
items上调用next(),所以它的行为肯定不像迭代器?关于重复,我之前读过那个答案,但觉得它可能不够简单让我理解:P 现在回想起来,结合这里的答案,我确实明白了,所以很高兴接受重复如果那是正在进行的共识? (stackoverflow 的新手) -
@E.Hazledine - 是的,但我猜 OP 想知道它的行为是像 python 2 中的
items还是像iteritems,在这种情况下,所有答案都是正确会导致错误的结论。因此我的简化评论
标签: python python-3.x dictionary iterator iterable