python迭代器的實例詳解

零下一度
發布: 2017-06-29 10:06:17
原創
1992 人瀏覽過

可直接作用於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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!