首頁  >  文章  >  後端開發  >  python迭代器的實例詳解

python迭代器的實例詳解

零下一度
零下一度原創
2017-06-29 10:06:172000瀏覽

可直接作用於for迴圈的物件叫做可迭代物件(iterable);

可被next()函數呼叫並不斷傳回下一個值的物件稱為迭代器(iterator);

所有的可迭代物件均可以透過內建函數iter()來轉變為迭代器。

在使用for迴圈的時候,程式就會自動呼叫即將處理的對象的迭代器對象,然後使用它的next()方法,直到偵測一個stoplteration異常。

>>> l = [4,5,6,7,8,9,0]   #这是一个列表
>>> i = iter(l)                 #可迭代对象转换为迭代器;
>>> next(i)
4
>>> next(i)
5
>>> next(i)
6
>>> next(i)
7
>>> next(i)
8
>>> next(i)
9
>>> next(i)
0
>>> next(i)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

因為清單中麼有超過0的數字,所以當範圍超過的話,就會傳回一個StopIteration異常。

在生產環境中如何判斷呢

>>> L = [4,5,6]
>>> I = L.__iter__()
>>> L.__next__()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: &#39;list&#39; object has no attribute &#39;__next__&#39;
>>> I.__next__()
4
>>> from collections import Iterator, Iterable
>>> isinstance(L, Iterable)
True
>>> isinstance(L, Iterator)
False
>>> isinstance(I, Iterable)
True
>>> isinstance(I, Iterator)
True
>>> [x**2 for x in I]    
[25, 36]

 

以上是python迭代器的實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn