迭代器及与生成器、生成式(推导式)的区别

迭代器表示的是一个元素流,可以被next()函数调用并不断返回下一个元素,直到没有元素时抛出StopIteration错误。

可以把这个元素流看做是一个有序序列,但却不能提前知道序列的长度,只能不断通过next()函数得到下一个元素,所以迭代器节省内存和空间


凡是可作用于for循环的对象都是可迭代对象,甚至包括文件对象(实现了__iter__方法就是可迭代对象);

凡是可作用于next()函数的对象都是迭代器(同时实现了__iter__方法__next__方法的对象,就是迭代器);

list、dict、str等是可迭代的(Iterable)但不是迭代器( Iterator),因为next()函数无法调用它们。可以通过iter()函数将它们转换成迭代器。

Python的for循环本质上就是通过不断调用next()函数实现的。

 

posted @ 2023-06-19 16:51  sangern  阅读(34)  评论(0)    收藏  举报