python中有些概念很是容易弄混淆,好比可迭代對象和迭代器。python
什麼是可迭代對象呢?spa
最簡單的定義就是:能夠使用for...in...語句進行循環的對象,好比字符串、列表、元組、字典以及迭代器、生成器都是可迭代對象。code
能夠使用isintance()來判斷:對象
>>> from collections import Iterable >>> isinstance({'dede':123},Iterable) True >>> isinstance('hello',Iterable) True >>> isinstance(123,Iterable) False >>> isinstance([1,3],Iterable) True
而迭代器是能夠使用next()進行回調的對象,可迭代對象和迭代器的聯繫是:能夠對迭代對象使用iter()方法來生成迭代器。blog
>>> a = iter([1,3,5]) >>> next(a) 1
>>> next(a) 3
>>> next(a) 5
>>> next(a) Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
或者根據列表生成式來建立生成器:字符串
>>> l = ( x * x for x in range(1,11))
>>> l
<generator object <genexpr> at 0x000000A8DF038938>
總結:generator
1.迭代器必定是迭代對象,迭代對象不必定是迭代器it
2.生成器必定是迭代器,迭代器不必定是生成器io
3.使用for...in...來遍歷迭代對象是最經常使用的方式ast