可迭代對象,迭代器(生成器)區別


python中有些概念非常容易弄混淆,比如可迭代對象和迭代器。

什么是可迭代對象呢?

最簡單的定義就是:可以使用for...in...語句進行循環的對象,比如字符串、列表、元組、字典以及迭代器、生成器都是可迭代對象。

可以使用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()方法來生成迭代器。

>>> 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>

 

總結:

1.迭代器一定是迭代對象,迭代對象不一定是迭代器

2.生成器一定是迭代器,迭代器不一定是生成器

3.使用for...in...來遍歷迭代對象是最常用的方式

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM