Heim  >  Artikel  >  Backend-Entwicklung  >  Lassen Sie uns über die bidirektionale Warteschlange von Python sprechen

Lassen Sie uns über die bidirektionale Warteschlange von Python sprechen

coldplay.xixi
coldplay.xixinach vorne
2020-10-27 17:09:092320Durchsuche

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)复制代码

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)复制代码
  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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.im. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen