三者联系
迭代器是一个更抽象的概念,任何对象,如果它的类有next方法(next python3)和__iter__方法返回自己本身,即为迭代器
通常生成器是通过调用一个或多个yield表达式构成的函数s生成的。同时满足迭代器的定义。
生成器是一种特殊的迭代器,即生成器都是迭代器,但反过来不行。
生成器和迭代器都只能遍历一次,即对象迭代完后就不能重新迭代了。
可直接作用于for循环的数据类型:
集合数据类型,如list、tuple、dict、set、str等;
generator,包括生成器和带yield的generator function。
以上这些可以直接作用于for循环的对象统称为可迭代对象:Iterable
list、dict、str虽然是可迭代的,却不是迭代器