Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung von Beispielen für Python-Iteratoren

Detaillierte Erläuterung von Beispielen für Python-Iteratoren

零下一度
零下一度Original
2017-06-29 10:06:172009Durchsuche

Ein Objekt, das direkt in einer for-Schleife verwendet werden kann, wird als iterierbares Objekt (iterable) bezeichnet.

Ein Objekt, das von der Funktion next() aufgerufen werden kann und kontinuierlich den nächsten Wert zurückgibt, wird als an bezeichnet iterator;

Alle iterierbaren Objekte können über die integrierte Funktion iter() in Iteratoren umgewandelt werden.

Bei Verwendung einer for-Schleife ruft das Programm automatisch das Iteratorobjekt des zu verarbeitenden Objekts auf und verwendet dann seine next()-Methode, bis eine Stoplteration-Ausnahme erkannt wird.

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

Da es in der Liste keine Zahlen gibt, die 0 überschreiten, wird bei Überschreitung des Bereichs eine StopIteration-Ausnahme zurückgegeben.

Wie man in einer Produktionsumgebung beurteilt

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

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Beispielen für Python-Iteratoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn