我对迭代器和可迭代对象之间的区别有些困惑。我已经阅读了很多资料,大致了解如下:
迭代器:一个类中包含__next__方法的对象。你可以在它上面调用next()方法。所有迭代器都是可迭代对象。
可迭代对象:一个类中定义了__iter__或__getitem__方法的对象。如果使用iter()函数可以构建一个迭代器,则该对象是可迭代的。并非所有可迭代对象都是迭代器。
一些_dict.items()是一个迭代器吗?我知道在Python2中,some_dict.iteritems()是迭代器。我只是想确认一下,因为我正在参加一门课程,它说它是一个迭代器,但我相当确定它只是一个可迭代对象。
谢谢你的帮助 :)
迭代器:一个类中包含__next__方法的对象。你可以在它上面调用next()方法。所有迭代器都是可迭代对象。
可迭代对象:一个类中定义了__iter__或__getitem__方法的对象。如果使用iter()函数可以构建一个迭代器,则该对象是可迭代的。并非所有可迭代对象都是迭代器。
一些_dict.items()是一个迭代器吗?我知道在Python2中,some_dict.iteritems()是迭代器。我只是想确认一下,因为我正在参加一门课程,它说它是一个迭代器,但我相当确定它只是一个可迭代对象。
谢谢你的帮助 :)
items()
确实不返回迭代器,但它返回的东西表现得像一个迭代器,所以你不应该关心它。换句话说,它不像 Python 2 中那样创建所有项的列表,而是在你遍历它们时逐个生成。 - zvoneitems
上调用next()
,所以它肯定不像迭代器一样工作?关于重复,我之前读过那个答案,但感觉它可能不够简单易懂:P 现在再回头看结合这里的答案,我明白了,所以如果这是共识,我很乐意接受重复(我对stackoverflow还很新)。 - Ed the Coder