Inhaltsverzeichnis
Iterator
Iterierbar
Heim Backend-Entwicklung Python-Tutorial Detaillierte Beispiele für Iteratoren und Generatoren in Python

Detaillierte Beispiele für Iteratoren und Generatoren in Python

Aug 13, 2017 am 10:00 AM
python 示例 详解

Iterator


Iterierbar

Definition

class Iterable(metaclass=ABCMeta):

    __slots__ = ()

    @abstractmethod
    def __iter__(self):
        while False:
            yield None

    @classmethod
    def __subclasshook__(cls, C):
        if cls is Iterable:
            if any("__iter__" in B.__dict__ for B in C.__mro__):
                return True
        return NotImplemented
Nach dem Login kopieren

Aus der Definition geht hervor, dass Iterable das enthalten muss __iter__ Funktion

Iterator

Definition

class Iterator(Iterable):

    __slots__ = ()

    @abstractmethod
    def __next__(self):
        'Return the next item from the iterator. When exhausted, raise StopIteration'
        raise StopIteration

    def __iter__(self):
        return self

    @classmethod
    def __subclasshook__(cls, C):
        if cls is Iterator:
            if (any("__next__" in B.__dict__ for B in C.__mro__) and
                any("__iter__" in B.__dict__ for B in C.__mro__)):
                return True
        return NotImplemented
Nach dem Login kopieren

Aus der Definition ist ersichtlich, dass Iterator die __next__ und enthält __iter__ Funktionen. Wenn next außerhalb des Gültigkeitsbereichs liegt, wird eine Beziehung vom Typ StopIteration

ausgelöst

#! /usr/bin/python
#-*-coding:utf-8-*-

from collections import Iterator,Iterable

# 迭代器
s = 'abc'
l = [1,2,3]
d=iter(l)

print(isinstance(s,Iterable)) # True
print(isinstance(l,Iterable)) # True

print(isinstance(s,Iterator)) # False
print(isinstance(l,Iterator)) # False

print(isinstance(d,Iterable)) # True
print(isinstance(d,Iterator)) # True
Nach dem Login kopieren
Theoretisch können Sie

dazu verwenden Führen Sie next() aus, bis der Iterator __next__()StopIteration auslöst. Tatsächlich bietet das System eine Möglichkeit, Iteratoren zu analysierenfor .. in ..

l = [1,2,3,4]
for i in l:
    print(i)
    
# 执行结果    
# 1
# 2
# 3
# 4
Nach dem Login kopieren
Generatorgenerator


Die Essenz eines Generators ist ein Iterator. Wenn in der Funktion

#! /usr/bin/python
#-*-coding:utf-8-*-

from collections import Iterator,Iterable

s = (x*2 for x in range(5))
print(s)
print('Is Iterable:' + str(isinstance(s,Iterable)))
print('Is Iterator:' + str(isinstance(s,Iterator)))

for x in s:
    print(x)

# 执行结果    
# <generator object <genexpr> at 0x000001E61C11F048>
# Is Iterable:True
# Is Iterator:True
# 0
# 2
# 4
# 6
# 8
Nach dem Login kopieren

yield vorhanden ist, ist die Funktion ein Generatorobjekt. Jedes Mal, wenn die Funktion ausgeführt wird startet die Ausführung beim vorherigen next und kehrt (entspricht yield) beim nächsten yield >return zurück

Das obige ist der detaillierte Inhalt vonDetaillierte Beispiele für Iteratoren und Generatoren in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie löste ich das Problem der Berechtigungen beim Betrachten der Python -Version in Linux Terminal? Wie löste ich das Problem der Berechtigungen beim Betrachten der Python -Version in Linux Terminal? Apr 01, 2025 pm 05:09 PM

Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Wie kann ich die gesamte Spalte eines Datenrahmens effizient in einen anderen Datenrahmen mit verschiedenen Strukturen in Python kopieren? Wie kann ich die gesamte Spalte eines Datenrahmens effizient in einen anderen Datenrahmen mit verschiedenen Strukturen in Python kopieren? Apr 01, 2025 pm 11:15 PM

Bei der Verwendung von Pythons Pandas -Bibliothek ist das Kopieren von ganzen Spalten zwischen zwei Datenrahmen mit unterschiedlichen Strukturen ein häufiges Problem. Angenommen, wir haben zwei Daten ...

Können Python -Parameteranmerkungen Zeichenfolgen verwenden? Können Python -Parameteranmerkungen Zeichenfolgen verwenden? Apr 01, 2025 pm 08:39 PM

Alternative Verwendung von Python -Parameteranmerkungen in der Python -Programmierung, Parameteranmerkungen sind eine sehr nützliche Funktion, die den Entwicklern helfen kann, Funktionen besser zu verstehen und zu verwenden ...

Python Cross-Platform Desktop-Anwendungsentwicklung: Welche GUI-Bibliothek ist die beste für Sie? Python Cross-Platform Desktop-Anwendungsentwicklung: Welche GUI-Bibliothek ist die beste für Sie? Apr 01, 2025 pm 05:24 PM

Auswahl der Python-plattformübergreifenden Desktop-Anwendungsentwicklungsbibliothek Viele Python-Entwickler möchten Desktop-Anwendungen entwickeln, die sowohl auf Windows- als auch auf Linux-Systemen ausgeführt werden können ...

Warum kann mein Code nicht die von der API zurückgegebenen Daten erhalten? Wie löst ich dieses Problem? Warum kann mein Code nicht die von der API zurückgegebenen Daten erhalten? Wie löst ich dieses Problem? Apr 01, 2025 pm 08:09 PM

Warum kann mein Code nicht die von der API zurückgegebenen Daten erhalten? Bei der Programmierung stoßen wir häufig auf das Problem der Rückgabe von Nullwerten, wenn API aufruft, was nicht nur verwirrend ist ...

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen ohne Serving_forver () an? Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen ohne Serving_forver () an? Apr 01, 2025 pm 10:51 PM

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen an? Uvicorn ist ein leichter Webserver, der auf ASGI basiert. Eine seiner Kernfunktionen ist es, auf HTTP -Anfragen zu hören und weiterzumachen ...

Wie lösten Python -Skripte an einem bestimmten Ort die Ausgabe in Cursorposition? Wie lösten Python -Skripte an einem bestimmten Ort die Ausgabe in Cursorposition? Apr 01, 2025 pm 11:30 PM

Wie lösten Python -Skripte an einem bestimmten Ort die Ausgabe in Cursorposition? Beim Schreiben von Python -Skripten ist es üblich, die vorherige Ausgabe an die Cursorposition zu löschen ...

Bieten Google und AWS öffentliche PYPI -Bildquellen an? Bieten Google und AWS öffentliche PYPI -Bildquellen an? Apr 01, 2025 pm 05:15 PM

Viele Entwickler verlassen sich auf PYPI (PythonpackageIndex) ...

See all articles