Heim > Artikel > Backend-Entwicklung > Lassen Sie uns über die bidirektionale Warteschlange von Python sprechen
Python-TutorialHeute stellen wir die Zwei-Wege-Warteschlange vor.
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)复制代码
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!