迭代器、可迭代对象、生成器

发布时间 2023-04-27 17:00:48作者: xiao_wlkq

1、迭代器

概念:迭代器可以记住遍历的位置,从第一个元素开始访问,知道所有元素访问结束,只能往前,不能后退。

iter("abc") --> 返回迭代器对象(包含了__next__()方法)--> __next__() 逐一访问'abc'中的元素;
当元素用尽时,__next__() 触发 StopIteration异常来通知终止 for 循环。

 

2、可迭代对象

概念:如果一个对象实现了__iter__(), 这么这个对象就是可迭代对象

可迭代对象,不一定能被迭代,不一定是迭代器。

(1) 不可迭代对象, 没有__iter__() 方法  

 

(2) 可迭代对象, 有__iter__() 方法,但不是迭代器

 

(3) 迭代器有__iter__() 方法和__next__()

 

结论:迭代器一定是可迭代对象,可迭代对象不一定是迭代器

(4) 手写可迭代器,遍历列表

 

2、生成器