ホームページ  >  記事  >  バックエンド開発  >  Pythonイテレータの例を詳しく解説

Pythonイテレータの例を詳しく解説

零下一度
零下一度オリジナル
2017-06-29 10:06:172000ブラウズ

for ループで直接使用できるオブジェクトは反復可能オブジェクト (iterable) と呼ばれます。

next() 関数によって呼び出され、継続的に次の値を返すことができるオブジェクトは反復子と呼ばれます。組み込み関数 iter() を通じてイテレータに変換されます。

for ループを使用する場合、プログラムは処理対象のオブジェクトのイテレータ オブジェクトを自動的に呼び出し、stoplteration 例外が検出されるまで next() メソッドを使用します。

>>> 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。