Verwenden Sie die kreisförmige Liste in Python

Olorunfemi Akinlua 21 Juni 2023
  1. Verwenden Sie itertools.cycle, um Circular List in Python zu verwenden
  2. Verwenden Sie Generatoren, um Circular List in Python zu verwenden
Verwenden Sie die kreisförmige Liste in Python

Eine reguläre verknüpfte Liste hat einen Wurzelknoten, bei dem jeder Knoten einen Zeiger auf den nächsten Knoten und ein Datenelement hat, mit Ausnahme des letzten Knotens, der keinen nächsten Knoten hat (also einen Null-Wert enthält), der uns sagt, dass das der ist letzter Knoten. In einer kreisförmig verknüpften Liste hat der letzte Knoten jedoch einen Zeiger zurück zum ersten Knoten in der Liste.

Zirkuläre verkettete Listen sind also verkettete Listen, die so strukturiert sind, dass alle Knoten innerhalb der besagten Struktur einen Kreis bilden. Diese lineare und dynamische Datenstruktur, deren Knoten nicht None sein können; hat den letzten Knoten mit dem ersten Knoten verbunden, sodass jeder Knoten zum vorherigen oder nächsten führen kann, und so weiter und so weiter.

Typischerweise ermöglicht uns ein iterator-Objekt, innerhalb einer Listen- oder Wörterbuch-Datenstruktur von einem Element zum anderen zu wechseln. Bei einer kreisförmigen Liste ermöglicht die Verbindung zwischen den einzelnen Knoten dies insbesondere durch die Verwendung integrierter Funktionen.

Dieser Artikel behandelt die Implementierung und Verwendung einer kreisförmigen Liste in Python, nativ oder mit Modulen.

Verwenden Sie itertools.cycle, um Circular List in Python zu verwenden

Python hat ein eingebautes Modul namens itertools, das Sequenzen mit Iteratoren und Funktionsschleifen ermöglicht. Innerhalb dieses Moduls helfen Iteratoren (Methoden) bei der Ausarbeitung effizienter Systeme, um verschiedene Kontexte zu durchlaufen, von kurzen Eingabesequenzen bis hin zu kombinatorischen Szenarien.

Wichtiger zu verwenden ist jedoch der Iterator cycle(), der ein unendlicher Iterator ist, der eine Liste nimmt und sie unendlich wiederholt.

Dies geschieht durch Erstellen eines Iterators, der seine Elemente zurückgibt und jedes Element aus dem Iterable kopiert. Anschließend gibt es die Elemente aus der gespeicherten Kopie zurück, nachdem das Iterable abgeschlossen ist.

Um das Modul itertools und die Methode cycle() zu verwenden, verwenden wir diese import-Anweisung:

from itertools import cycle

Alles, was wir von hier aus tun müssen, ist, eine Liste an die cycle()-Methode zu übergeben, und wir haben eine kreisförmige verkettete Liste. Darüber hinaus können wir eine eingebaute Funktion, next(), verwenden, um auf das nächste Element oder den nächsten Knoten aus dem Iterator zuzugreifen und es zurückzugeben, bei dem es sich um die kreisförmige verkettete Liste handelt.

from itertools import cycle

numList = ["one", "two", "three", "four", "five"]

circularList = cycle(numList)

print(next(circularList))
print(next(circularList))

Ausgang:

one
two

Mit der next()-Methode können wir den Iterator also einfach einen nach dem anderen vorrücken, anstatt die for-Schleife zu verwenden, die endlos wiederholt wird.

from itertools import cycle

numList = ["one", "two", "three", "four", "five"]

circularList = cycle(numList)

for num in circularList:
    print(num)

Ausgang:

one
two
three
four
five
one
two
three
four

Verwenden Sie Generatoren, um Circular List in Python zu verwenden

Mit Generatoren können wir Iterationen und Funktionen erstellen, die einen Iterator zurückgeben, über den wir iterieren können. Im Gegensatz zu typischen Funktionen, bei denen wir return-Anweisungen verwenden, verwenden wir die yield-Anweisungen in generators.

Im Gegensatz zu return-Anweisungen pausiert die yield-Anweisung die Funktion, speichert alle ihre Umgebungsvariablen (oder Status) und überträgt eine davon bei nachfolgenden Aufrufen. Zusätzlich kann eine generator-Funktion eine return-Anweisung und mehr als eine yield-Anweisung enthalten.

Um eine kreisförmige Liste zu erstellen, können wir die Anweisung yield verwenden, um den Zustand der Funktion zu speichern und auf nachfolgende Aufrufe zu warten.

def circular(args):
    while True:
        for element in args:
            yield element


numList = ["one", "two", "three", "four", "five"]

circularList = circular(numList)
print(circularList)

Ausgang:

<generator object circular at 0x0000018AFFD39A10>

Mit der generator-Funktion namens circular() können wir ihr ein iterierbares Argument übergeben. Es wird mit der Anweisung while True für immer wiederholt, kann aber die Funktion anhalten, um den aktuellen Zustand zurückzugeben (dh das aktuelle Element oder den aktuellen Knoten, auf dem es sich befindet), und fortfahren, wenn ein weiterer Aufruf erfolgt ist.

Dies hilft uns, eine kreisförmige Liste zu erstellen.

Sie können die Methode next() verwenden, um das nächste Element innerhalb der kreisförmigen Liste abzurufen.

def circular(args):
    while True:
        for element in args:
            yield element


numList = ["one", "two", "three", "four", "five"]

circularList = circular(numList)

print(next(circularList))
print(next(circularList))

Ausgang:

one
two

Oder auch endlos schleifen.

def circular(args):
    while True:
        for element in args:
            yield element


numList = ["one", "two", "three", "four", "five"]

circularList = circular(numList)

for i in circularList:
    print(i)

Ausgang:

one
two
three
four
five
one
two
Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

Verwandter Artikel - Python List