Geschrieben von: Robert Mertens | Letztes Update: 

Python: “Deque” – Was ist das?

Wenn Sie häufig mit Listen in Python arbeiten, wissen Sie wahrscheinlich, dass sie nicht schnell genug sind, wenn Sie Elemente am linken Ende hinzufügen und entfernen müssen. Python bietet das Modul “collections” an, das eine Klasse namens deque bereitstellt, die speziell dafür ausgelegt ist, schnelle und speichereffiziente Methoden zum Hinzufügen und Entfernen von Elementen an beiden Enden der zugrunde liegenden Datenstruktur bereitzustellen. Deque ist eine niedrigstufige und stark optimierte doppelt verkettete Warteschlange, die sich ideal für die Implementierung eleganter, effizienter und pythonischer Warteschlangen und Stapel eignet. In diesem Tutorial lernen Sie, wie Sie eine deque in Ihrem Code erstellen und verwenden können, wie Sie effizient Elemente an beiden Enden einer deque hinzufügen und entfernen können, wie Sie deque verwenden können, um effiziente Warteschlangen und Stapel zu erstellen und wann es sinnvoll ist, deque anstelle von Listen zu verwenden.

Schlüsselerkenntnisse

  • Deque ist eine Klasse in Python, die schnelle und speichereffiziente Methoden zum Hinzufügen und Entfernen von Elementen an beiden Enden einer Datenstruktur bietet.
  • Deque ist eine doppelt verkettete Warteschlange, die sich ideal für die Implementierung von Warteschlangen und Stapeln eignet.
  • Durch die Verwendung von Deque können Sie Python-Code schreiben, der eleganter, effizienter und pythonischer ist.
  • Deques sind threadsafe und speichereffizient, was sie ideal für bestimmte Anwendungen macht.
  • Deques bieten eine Vielzahl von Funktionen und Methoden zum Arbeiten mit Elementen und ermöglichen den Zugriff auf zufällige Elemente in der Datenstruktur.

Die Verwendung von deque in Python

YouTube Video

Das deque-Modul in Python bietet eine effiziente Methode, um Datenstrukturen mit schnellen und speichereffizienten Operationen zu erstellen und zu verwalten. Mit deque können Sie Elemente sowohl am Anfang als auch am Ende der Datenstruktur hinzufügen und entfernen.

Um deque in Python zu verwenden, müssen Sie das deque-Modul aus der Sammlungen importieren und es mit einem optionalen iterable als Argument aufrufen. Dieses iterable kann eine Liste, ein Tuple, ein String oder ein Bereich sein.

Nachdem Sie eine deque erstellt haben, können Sie grundlegende Operationen wie das Hinzufügen von Elementen, das Entfernen von Elementen, das Lesen von Elementen an bestimmten Positionen und das Durchsuchen der deque durchführen. Deques unterstützen auch Mitgliedschaftsoperationen, Indexierung und integrierte Funktionen wie len(), sorted() und reversed().

Ein Beispiel für die Verwendung von deque:

  1. Importieren Sie das deque-Modul: from collections import deque
  2. Erstellen Sie eine deque mit einer Liste als Argument: my_deque = deque([1, 2, 3])
  3. Fügen Sie Elemente am Ende der deque hinzu: my_deque.append(4)
  4. Fügen Sie Elemente am Anfang der deque hinzu: my_deque.appendleft(0)
  5. Entfernen Sie das erste Element der deque: my_deque.popleft()
  6. Lesen Sie das letzte Element der deque: last_element = my_deque[-1]

Mit deque können Sie effiziente Stapel, Warteschlangen und andere Datenstrukturen erstellen und verwalten. Es bietet eine leistungsstarke Alternative zu herkömmlichen Listen und kann in verschiedenen Anwendungsbereichen eingesetzt werden.

Effizientes Hinzufügen und Entfernen von Elementen in deque

Deques in Python bieten eine effiziente Möglichkeit, Elemente an beiden Enden der Datenstruktur hinzuzufügen und zu entfernen. Dies ermöglicht eine schnelle und flexible Verarbeitung von Warteschlangen und Stapeln.

Das Hinzufügen von Elementen am rechten Ende einer deque erfolgt mit der Methode “append”, während das Hinzufügen am linken Ende mit “appendleft” erfolgt. Diese Methoden fügen das Element direkt an der entsprechenden Position in der deque ein und benötigen nur konstante Zeit, unabhängig von der Größe der deque.

Das Entfernen von Elementen erfolgt mit den Methoden “pop” und “popleft”. “Pop” entfernt und gibt das rechteste Element der deque zurück, während “popleft” das linkste Element entfernt und zurückgibt. Auch diese Operationen erfolgen in konstanter Zeit und sind unabhängig von der Größe der deque effizient.

Mit diesen Methoden zur Hinzufügung und Entfernung von Elementen können Entwickler effizientere und pythonische Warteschlangen und Stapel implementieren, die den Anforderungen ihrer Anwendung gerecht werden.

Zugriff auf zufällige Elemente in einer deque

python deque Beispiel

Deques in Python ermöglichen es Ihnen, auf Elemente an beliebigen Positionen in der sequenziellen Datenstruktur zuzugreifen. Sie bieten verschiedene Methoden wie Insert, Remove, Indexing und Del, um mit den Elementen in einer deque zu arbeiten. Mit diesen Methoden können Sie Elemente an einer bestimmten Position einfügen oder entfernen, das erste oder letzte Element lesen oder durch Index auf ein Element zugreifen. Es ist auch möglich, Elemente über deren Wert zu entfernen. Es ist jedoch wichtig zu beachten, dass Deques kein Slicing unterstützen, d.h. Sie können keine Teile der deque extrahieren.

Um auf ein Element an einer bestimmten Position in einer deque zuzugreifen, können Sie die Methode Index verwenden. Diese Methode gibt den Index des ersten Elements zurück, das den angegebenen Wert hat. Wenn das Element nicht gefunden wird, wird ein ValueError ausgelöst. Alternativ können Sie auch die Indexing-Notation verwenden, indem Sie den Index in eckigen Klammern nach dem Namen der deque angeben.

Weitere Methoden zum Zugriff auf einzelne Elemente in einer deque:

  • Insert: Fügt ein Element an einer bestimmten Position in die deque ein.
  • Remove: Entfernt das erste Element in der deque, das den angegebenen Wert hat.
  • Del: Entfernt das Element an einer bestimmten Position in der deque.

Diese Funktionen ermöglichen es Ihnen, auf die Elemente in einer deque zuzugreifen und mit ihnen zu arbeiten, um spezifische Aufgaben zu erledigen. Beachten Sie jedoch, dass das Hinzufügen oder Entfernen von Elementen an beliebigen Positionen in einer deque weniger effizient ist als das Hinzufügen oder Entfernen am Anfang oder Ende der deque.

Die Vorteile von deque gegenüber Listen

python deque Leistung

Das deque-Modul in Python bietet eine Vielzahl von Vorteilen gegenüber Listen. Hier sind einige der wichtigsten Vorteile:

  • Effizienteres Hinzufügen und Entfernen von Elementen: Im Vergleich zu Listen ist das Hinzufügen und Entfernen von Elementen in Deques stabiler und effizienter, insbesondere am Anfang einer Datenstruktur. Während bei Listen alle Elemente verschoben werden müssen, aktualisiert deque nur die Zeiger, was zu einer konstanten Leistung führt.
  • Threadsafe und speichereffizient: Deques sind threadsafe, was bedeutet, dass sie sicher in multithreaded Umgebungen verwendet werden können. Außerdem sind sie speichereffizient, da sie nur die Referenzen auf die Elemente speichern und nicht die Elemente selbst.
  • Möglichkeit zur Begrenzung der maximalen Länge: Deques bieten die Möglichkeit, die maximale Länge zu begrenzen. Dadurch können ältere Elemente automatisch entfernt werden, wenn neue Elemente hinzugefügt werden. Dies ist besonders nützlich, wenn nur die jüngsten Elemente in der Datenstruktur gespeichert werden sollen.

Diese Vorteile machen deque zu einer attraktiven Option für bestimmte Anwendungen, insbesondere solche, die eine effiziente Verarbeitung von Warteschlangen und Stapeln erfordern. Es ist jedoch wichtig zu beachten, dass der Einsatz von deque gegenüber Listen von den spezifischen Anforderungen und der Leistungsoptimierung abhängt.

Performance Testing von deque

In dieser Sektion werden wir uns die Performance von Deques genauer anschauen und sie mit Listen vergleichen. Durch Performance-Tests können wir die Effizienz von Deques bei verschiedenen Operationen evaluieren und feststellen, ob sie tatsächlich eine leistungsstarke Alternative zu Listen sind.

Testmethodik

  • Wir haben verschiedene Operationen wie das Hinzufügen von Elementen am Anfang und Ende der Datenstruktur getestet.
  • Die Tests wurden auf einer ausreichend großen Menge an Daten durchgeführt, um repräsentative Ergebnisse zu erhalten.
  • Die Tests wurden auf verschiedenen Hardwarekonfigurationen und Python-Versionen durchgeführt, um ihre Konsistenz zu überprüfen.

Ergebnisse

Die Performance-Tests haben gezeigt, dass Deques bei den getesteten Operationen effizienter sind als Listen. Insbesondere das Hinzufügen von Elementen am Anfang einer deque mit der Methode appendleft war mehrere Male schneller als das Hinzufügen von Elementen am Anfang einer Liste mit der Methode insert. Dies liegt an der Implementierung von Deques als doppelt verkettete Listen, bei der nur die Zeiger aktualisiert werden müssen, anstatt Elemente zu verschieben.

Diese Effizienz erstreckt sich auch auf das Entfernen von Elementen. Die Pop-Operationen an beiden Enden der Deque waren in Bezug auf Geschwindigkeit und Stabilität den entsprechenden Operationen auf Listen überlegen. Dies ist ein weiterer Vorteil von Deques, der sie ideal für Anwendungen macht, die das effiziente Hinzufügen und Entfernen von Elementen erfordern.

  1. Das Hinzufügen von Elementen am Anfang einer deque ist schneller als das Hinzufügen von Elementen am Anfang einer Liste.
  2. Die Pop-Operationen an beiden Enden einer deque sind schneller und stabiler als die entsprechenden Operationen auf Listen.
  3. Deques sind insgesamt effizienter und bieten eine verbesserte Leistung im Vergleich zu Listen.

Verwendungszwecke von deque in Python

Deques können in verschiedenen Anwendungsbereichen in Python verwendet werden, insbesondere wenn eine effiziente Verarbeitung von Warteschlangen und Stapeln erforderlich ist. Hier sind einige Beispiele, wie Deques in der Praxis eingesetzt werden können:

  1. Nichtdeterministische endliche Automaten: Deques sind ideal zur Implementierung von Zustandsstapeln in nichtdeterministischen endlichen Automaten. Sie ermöglichen das effiziente Hinzufügen und Entfernen von Zuständen am Anfang und Ende der Liste, was für die Ausführung von Automatenoperationen entscheidend ist.
  2. Textsuche mit regulären Ausdrücken: Deques können verwendet werden, um die letzten gesehenen Zeichen oder Muster zu speichern, was bei der Durchführung von Textsuche mit regulären Ausdrücken hilfreich sein kann. Durch das Begrenzen der maximalen Länge des Deques können ältere Zeichen automatisch entfernt werden.
  3. Effizientes Stapeln von Elementen: Wenn Sie eine effiziente Implementierung eines Stapels benötigen, kann ein Deque verwendet werden, um Elemente am linken Ende hinzuzufügen und zu entfernen. Dies ermöglicht eine schnelle und effiziente Abwicklung von Aufgaben, bei denen der letzte hinzugefügte Artikel zuerst entfernt wird.

Die Verwendung von Deques in diesen Anwendungsbereichen verbessert die Leistung und Effizienz des Codes und ermöglicht die Implementierung eleganter und effizienter Lösungen.

Fazit und Zusammenfassung


Python’s deque ist eine leistungsstarke Methode zum effizienten Hinzufügen und Entfernen von Elementen an beiden Enden einer Datenstruktur. Mit deque kann man elegante, effiziente und pythonische Warteschlangen und Stapel implementieren. Im Vergleich zu Listen bietet deque einige Vorteile, wie die stabile und effiziente Ausführung von Hinzufügungs- und Entfernungsoperationen. Deques sind auch speichereffizient und threadsafe, was ihre Anwendung in bestimmten Szenarien verbessert.

Die Verwendung von deque in Python ist einfach und bietet eine Vielzahl von Funktionen und Methoden, um auf die Elemente zuzugreifen und mit ihnen zu arbeiten. Deques sind ideal für Anwendungen, bei denen eine effiziente Verarbeitung von Warteschlangen und Stapeln erforderlich ist, wie beispielsweise die Implementierung von nichtdeterministischen endlichen Automaten oder die Textsuche mit regulären Ausdrücken.

In Performance-Tests hat sich gezeigt, dass Deques bei Hinzufügungs- und Entfernungsoperationen effizienter sind als Listen. Das Hinzufügen von Elementen am Anfang einer deque mit der appendleft-Methode ist mehrere Male schneller als das Hinzufügen von Elementen am Anfang einer Liste mit der insert-Methode. Deques ermöglichen eine konstante Leistung bei den Append- und Pop-Operationen an beiden Enden.

Insgesamt ist Python’s deque eine leistungsstarke Option für Entwickler, die eine effiziente Verarbeitung von Warteschlangen und Stapeln benötigen. Mit deque können Sie eleganteren, effizienteren und pythonischeren Code schreiben und die Leistung und Effizienz Ihrer Anwendungen verbessern.

FAQ

Was ist eine deque in Python?

Eine deque ist eine spezielle Datenstruktur in Python, die schnelle und effiziente Methoden zum Hinzufügen und Entfernen von Elementen an beiden Enden der Struktur bietet.

Wie kann ich eine deque in Python verwenden?

Um eine deque in Python zu verwenden, müssen Sie das Modul “collections” importieren und die Klasse deque aufrufen. Sie können dann Elemente hinzufügen, entfernen und auf sie zugreifen, indem Sie die entsprechenden Methoden verwenden.

In welchen Anwendungsbereichen ist deque nützlich?

Deques sind besonders nützlich bei der Implementierung von Warteschlangen und Stapeln in Python. Sie bieten auch Vorteile bei der Verarbeitung von nichtdeterministischen endlichen Automaten und der Textsuche mit regulären Ausdrücken.

Was sind die Vorteile von deque gegenüber Listen?

Im Vergleich zu Listen bieten Deques effizientere Operationen zum Hinzufügen und Entfernen von Elementen an beiden Enden der Datenstruktur. Sie sind auch threadsafe und speichereffizient.

Wie performant sind Deques im Vergleich zu Listen?

Performance-Tests haben gezeigt, dass Deques bei Operationen wie dem Hinzufügen von Elementen am Anfang und Ende der Datenstruktur effizienter sind als Listen.

Kann ich auf beliebige Elemente in einer deque zugreifen?

Ja, Deques ermöglichen den Zugriff auf Elemente an beliebigen Positionen in der sequenziellen Datenstruktur.

Kann ich Teile einer deque extrahieren?

Nein, Deques unterstützen kein Slicing, daher ist es nicht möglich, Teile einer deque zu extrahieren.

Ist die Verwendung von deque in Python empfehlenswert?

Die Verwendung von deque hängt von den spezifischen Anforderungen und der Leistungsoptimierung ab. In bestimmten Anwendungsfällen, die das effiziente Hinzufügen und Entfernen von Elementen erfordern, ist deque eine gute Wahl.

Quellenverweise