迭代器是访问集合的方式,只要它能被next()函数调用并不断返回下一个值,那么它就是迭代器。最重要的是它和生成器一样也是惰性计算(只有在元素被需要的时候才生成,节约空间)。
区分可迭代的和迭代器:
list、dict、str都是可迭代的,但不是迭代器,他们在创建时就创建了所有元素,而迭代器只要在元素被需要时才创建,所以它也不可能知道元素个数,而其它的却知道。
区分生成器和迭代器:
生成器在前一节说过,可以通过函数来实现,而迭代器是通过一组元素集合来实现。一个可以有执行过程,另一个只是值的集合
凡是可迭代对象都可以通过iter()函数变为迭代器。
for循环之所以也能调用出生成器和迭代器的值是因为它是通过不断调用next()函数实现的
阅读(388) | 评论(0) | 转发(0) |