python生成器(generator)、迭代器(iterator)、对象可迭代(iterable)区别

三者联系

  • 迭代器是一个更抽象的概念,任何对象,如果它的类有next方法(next python3)和__iter__方法返回自己本身,即为迭代器

  • 通常生成器是通过调用一个或多个yield表达式构成的函数s生成的。同时满足迭代器的定义。

  • 生成器是一种特殊的迭代器,即生成器都是迭代器,但反过来不行。

  • 生成器和迭代器都只能遍历一次,即对象迭代完后就不能重新迭代了。

可直接作用于for循环的数据类型:

  1. 集合数据类型,如list、tuple、dict、set、str等;

  2. generator,包括生成器和带yield的generator function。

以上这些可以直接作用于for循环的对象统称为可迭代对象:Iterable

list、dict、str虽然是可迭代的,却不是迭代器

生成器

猜你喜欢

转载自www.cnblogs.com/wujingqiao/p/9641729.html