亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Umfassendes Beispiel für Iteratoren und Generatoren

Da Iteratoren und Generatoren grunds?tzlich interoperabel sind, müssen einige Wissenspunkte miteinander integriert werden

1. Umgekehrte Iteration

Umgekehrte Iteration, es sollte auch ein Im Beispiel der Iteration von Anfang an gibt es eine Ausgabeliste mit Elementen von 1 bis 5. ’s

list1 = [1,2,3,4,5]
for num1 in list1 :
    print ( num1 , end = ' ' )

Was machen wir also von 5 auf 1? Dies ist auch sehr einfach. Es gibt eine integrierte Funktion reversed()

list1 = [1,2,3,4,5]
for num1 in reversed(list1) :
    print ( num1 , end = ' ' )

Die gerichtete Iteration ist sehr einfach, aber es ist zu beachten, dass die umgekehrte Iteration nur funktioniert, wenn die Gr??e des Objekts m?glich ist vorbestimmt sein oder das Objekt implementiert __reversed__( ), um wirksam zu werden. Wenn beides nicht erfüllt ist, müssen Sie das Objekt zun?chst in eine Liste konvertieren

Tats?chlich k?nnen wir oft eine umgekehrte Iteration implementieren, indem wir die Methode __reversed__() in einer benutzerdefinierten Klasse implementieren. Einige Wissenspunkte wurden jedoch in den vorherigen Kapiteln nicht erw?hnt, aber Sie k?nnen sie entsprechend lesen. Wer über Programmierkenntnisse verfügt, sollte sie nach dem Erlernen der oben genannten Wissenspunkte verstehen k?nnen.

# -*- coding: UTF-8 -*-
class Countdown:
    def __init__(self, start):
        self.start = start
    def __iter__(self):
    # Forward iterator
        n = self.start
        while n > 0:
            yield n
            n -= 1
    def __reversed__(self):
    # Reverse iterator
        n = 1
        while n <= self.start:
            yield n
            n += 1
for rr in reversed(Countdown(30)):
    print(rr)
for rr in Countdown(30):
    print(rr)

Das Ausgabeergebnis ist 1 zu 30 und dann 30 zu 1, was sequentielles Drucken bzw. umgekehrtes Drucken ist

2. Iterieren Sie mehrere Sequenzen gleichzeitig

Sie m?chten mehrere Sequenzen gleichzeitig durchlaufen und dabei jedes Mal ein Element aus jeder Sequenz übernehmen. Sind Sie schon einmal auf ein solches Bedürfnis gesto?en?

Um mehrere Sequenzen gleichzeitig zu iterieren, verwenden Sie die Funktion zip(): Konkretes Beispiel:

# -*- coding: UTF-8 -*-
names = ['laingdianshui', 'twowater', '兩點水']
ages = [18, 19, 20]
for name, age in zip(names, ages):
     print(name,age)

Ausgabeergebnis:

laingdianshui 18
twowater 19
兩點水 20

Tats?chlich ist zip(a , b) generiert einen Iterator, der das Tupel (x, y) zurückgibt, wobei x von a und y von b kommt. Sobald eine der Sequenzen das Ende erreicht, endet die Iteration. Daher stimmt die Iterationsl?nge mit der L?nge der kürzesten Sequenz in den Parametern überein. Achten Sie darauf, diesen Satz zu verstehen. Das hei?t, wenn die L?ngen von a und b inkonsistent sind, wird die kürzeste L?nge als Standard verwendet und die Durchquerung endet.

Mit der Funktion zip() k?nnen wir auch ein Diktat (W?rterbuch) aus einer Schlüsselliste und einer Werteliste generieren, wie folgt:

# -*- coding: UTF-8 -*-
names = ['laingdianshui', 'twowater', '兩點水']
ages = [18, 19, 20]
dict1= dict(zip(names,ages))
print(dict1)

Die folgenden Ergebnisse ausgeben:

{'laingdianshui': 18, 'twowater': 19, '兩點水': 20}

Lassen Sie mich hier erw?hnen, dass zip() mehr als zwei Sequenzparameter akzeptieren kann, nicht nur zwei.

Weiter lernen
||
einreichenCode zurücksetzen