Lassen Sie uns über die bidirektionale Warteschlange von Python sprechen

coldplay.xixi
Freigeben: 2020-10-27 17:09:09
nach vorne
2283 Leute haben es durchsucht

Python-TutorialHeute stellen wir die Zwei-Wege-Warteschlange vor.

Lassen Sie uns über die bidirektionale Warteschlange von Python sprechen

Obwohl Sie die Methoden .append und .pop von Python-Listen verwenden können, um einen Stapel oder eine Warteschlange zu simulieren, ist das Löschen des ersten Elements der Liste oder das Hinzufügen eines neuen Elements vor dem ersten Element sehr zeitaufwändig. Weil alle Elemente in der Liste nach hinten verschoben werden müssen.

Die bidirektionale Warteschlange von Python wird mithilfe der Klasse „collections.deque“ implementiert. Es handelt sich um eine threadsichere Klasse, die schnell Elemente an beiden Enden hinzufügen oder entfernen kann.

deque /dɛk/

Sie können auch die Klasse „collections.deque“ verwenden, um Caching zu implementieren. Geben Sie zunächst die Größe der Cache-Warteschlange an, entfernen Sie dann abgelaufene Elemente aus dem Kopf der Warteschlange und fügen Sie am Ende neue Elemente hinzu.

Luciano Ramalho gab ein Beispiel, um die grundlegende Verwendung einer Zwei-Wege-Warteschlange zu veranschaulichen.

from collections import deque

dq = deque(range(10), maxlen=10)
logging.info('dq -> %s', dq)

dq.rotate(3)
logging.info('dq -> %s', dq)

dq.rotate(-4)
logging.info('dq -> %s', dq)

dq.extend([11, 22, 33])
logging.info('dq -> %s', dq)

dq.extendleft([10, 20, 30, 40])
logging.info('dq -> %s', dq)复制代码
Nach dem Login kopieren

Operationsergebnisse:

INFO - dq -> deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10)
INFO - dq -> deque([7, 8, 9, 0, 1, 2, 3, 4, 5, 6], maxlen=10)
INFO - dq -> deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], maxlen=10)
INFO - dq -> deque([4, 5, 6, 7, 8, 9, 0, 11, 22, 33], maxlen=10)
INFO - dq -> deque([40, 30, 20, 10, 4, 5, 6, 7, 8, 9], maxlen=10)复制代码
Nach dem Login kopieren
  1. maxlen ist ein optionaler Parameter von deque, mit dem die Warteschlangenkapazität angegeben wird, dh wie viele Elemente platziert werden können. Die Methode
  2. rotate() kann die Warteschlange drehen. Es hat einen Eingabeparameter n. Wenn n > 0 ist, werden die n Elemente beginnend von der äußersten rechten Seite der Warteschlange nach links verschoben. Wenn n
  3. extend() kann neue Elemente zur Warteschlange hinzufügen. Sie akzeptiert eine Liste als Eingabeparameter und fügt alle Elemente in der Liste der Warteschlange hinzu. Neue Elemente werden auf der rechten Seite der Warteschlange platziert.
  4. Wenn beim Hinzufügen eines neuen Elements festgestellt wird, dass die Warteschlange voll ist, wird das Element an der Spitze der Warteschlange automatisch gelöscht. Die Methode
  5. extendleft(iter) besteht darin, das neu hinzugefügte Element auf der linken Seite der Warteschlange zu platzieren. Andere Eigenschaften sind dieselben wie die Methode „extend()“.

Die bidirektionale Warteschlange ist nicht perfekt. Wenn Sie ein Element aus der Mitte der Warteschlange löschen, wird es langsamer, da es nur für die Kopf- und Endoperationen der Warteschlange optimiert ist.

Verwandte kostenlose Lernempfehlungen: Python-Tutorial(Video)

Das obige ist der detaillierte Inhalt vonLassen Sie uns über die bidirektionale Warteschlange von Python sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:juejin.im
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!