迭代器及与生成器、生成式(推导式)的区别
迭代器表示的是一个元素流,可以被next()函数调用并不断返回下一个元素,直到没有元素时抛出StopIteration错误。
可以把这个元素流看做是一个有序序列,但却不能提前知道序列的长度,只能不断通过next()函数得到下一个元素,所以迭代器节省内存和空间。
凡是可作用于for循环的对象都是可迭代对象,甚至包括文件对象(实现了__iter__方法就是可迭代对象);
凡是可作用于next()函数的对象都是迭代器(同时实现了__iter__方法和__next__方法的对象,就是迭代器);
list、dict、str等是可迭代的(Iterable)但不是迭代器( Iterator),因为next()函数无法调用它们。可以通过iter()函数将它们转换成迭代器。
Python的for循环本质上就是通过不断调用next()函数实现的。


浙公网安备 33010602011771号