要完全理解透生成器,需要我们先掌握三个概念:
- 可迭代对象(Iterable)
- 迭代器(Iterator)
- 迭代(Iteration)
放一张图来理解,来自这里
![b5b4f0ec070eb62cb0161cd20d4f7693.png](https://i-blog.csdnimg.cn/blog_migrate/b0bdcb05fa8f5db2cb43c26ed7f11838.jpeg)
额外提到了容器(container),说的是我们的集合类对象,如 list、set、dict,它们将多个元素组织在一起,这些对象就可以称为 container。
可迭代对象:
可直接作用于for循环的对象统称为Iterable 。具体的实现是,Python 中的对象只要定义了__iter__方法(该方法返回一个迭代器对象),或者定义了支持下标索引的__getitem__方法,那么这个对象就是可迭代对象。
>>> from collections import Iterable>>> isinstance([], Iterable)True>>> isinstance({}, Iterable)True>>> isinstance([x for x in range(10)], Iterable)True
迭代器:
可作用于next()函数的对象都是Iterator。具体的实现是,任何对象只要定义了__