Python迭代器的用法,next()方法的調用


迭代器的用法:

首先說兩個概念,一個是可迭代的對象,一個是迭代器對象,兩個不

可迭代Iterable):就是可以for循環取數據的,比如字典、列表、元組、字符串等不可使用next()方法。

迭代器(Iterator),也是可以依次迭代取出數據的對象,在內存空間這樣存儲的:<list_iterator object at 0x01E35770>占用內存小,並且可以使用next()方法依次取數據

 

可以使用isinstance()方法來判斷一個對象是可迭代對象還是迭代器對象

比如

>>> a = [x for x in range(3)]             #生成一個列表

>>> from collections import Iterable     #導入Iterable模塊

>>> isinstance(a,Iterable)              #使用isinstance(“”,Iterable)判斷是否是可迭代的

True                               #返回True

>>> from collections import Iterator      #導入Iterator模塊

>>> isinstance(a,Iterator)              #使用isinstance(“”,Iterator)判斷是否迭代器對象

False                               #返回False

 

上面的結果可以看出來,列表是一個可迭代的對象,但是不是迭代器,同樣的字典,元組,字符串也不是迭代器,另外,數字既不是迭代器對象,也不是可迭代對象

那么如何生成迭代器

使用iter()方法

比如接着上面的  a = [x for x in range(3)]b=iter(a)

b成了迭代器

>>> b = iter(a)

>>> b

<list_iterator object at 0x029CCD30>              #b返回值 一個地址

>>> a

[0, 1, 2]                   #a還是原來的列表

 

這時候就可以對b使用next()方法來取值

>>> next(b)                     #第一次next(b),返回第一個元素 0

0

>>> next(b)                     #next(b),返回個元素 1

1

>>> next(b)                     #next(b),返回個元素 2

2

>>> next(b)                     #next(b),列表只有三個元素,此時超出索引范圍next()函數拋出了一個異常StopIteration

Traceback (most recent call last):

  File "<pyshell#72>", line 1, in <module>

    next(b)

StopIteration

 


免責聲明!

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



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