可迭代对象,迭代器(生成器)区别

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

相关文章
相关标签/搜索