Verhalten beim Auflisten in Python heapq

Als ich wettbewerbsfähige Programmierung durchführte und versuchte, Dijkstra in Python zu implementieren, wollte ich, dass heapq so etwas wie ("vertikaler Name", Entfernung) und nach Entfernung sortiert hat, aber ich war ein wenig besorgt über das damalige Verhalten. Es ist ein Memo-Artikel, den ich gerade bestätigt habe.

Ich fragte mich, ob so etwas wie ein benutzerdefinierter Operator eingefügt werden könnte, aber ich dachte, es wäre langsam, wenn ich es selbst machen würde, also wollte ich es so weit wie möglich vermeiden.

Ich denke, es ist eine Heapq-Spezifikation oder eine Python-Vergleichsoperator-Spezifikation, aber ich werde es zusammenfassen, weil es eine große Sache ist.

Fazit

Wenn Sie die Liste in Heapq eintauchen, ** Aufsteigende Reihenfolge des ersten Elements → Aufsteigende Reihenfolge des zweiten Elements **. Es scheint, dass die Auswertung jedes Elements unabhängig erfolgt, daher ist es in Ordnung, Zahlen und Zeichenketten zu mischen.

Zusamenfassend

[[1,4],[2,0],[0,1],[0,3]]
↓
[[0,1],[0,3],[1,4],[2,0]]

Es wird so sein.

Überprüfung 1


import heapq
import random
a = []
heapq.heapify(a)

for i in range(5):
    heapq.heappush(a,[random.randint(0,10) for i in range(2)])

while a:
    print(heapq.heappop(a))
[0, 10]
[2, 7]
[2, 7]
[2, 10]
[5, 0]

Überprüfung 2


for i in range(5):
    heapq.heappush(a,[random.randint(0,10),chr(random.randint(97,97+26))])

while a:
    print(heapq.heappop(a))
[0, 'k']
[4, 'd']
[4, 'l']
[5, 'c']
[7, 'o']

das ist alles. Ich mag Python, weil ich mich dadurch gut fühle, aber ich mag es nicht, weil ich manchmal Unfälle bekomme (Widerspruch).

Recommended Posts

Verhalten beim Auflisten in Python heapq
Verhalten beim Speichern eines Python-Datetime-Objekts in MongoDB
Achtung bei os.mkdir in Python
Vorsichtsmaßnahmen bei der Verwendung von Pit mit Python
Überprüfen Sie das Verhalten beim Zuweisen von Python
Bei Verwendung regulärer Ausdrücke in Python
Beim Schreiben eines Programms in Python
Verhalten bei der Rückkehr in den with-Block
Erstellen Sie ScriptableObject in Python, wenn Sie ADX2 erstellen
Vorsichtsmaßnahmen beim Beizen einer Funktion in Python
[Python, Multiprocessing] Verhalten für Ausnahmen bei Verwendung von Multiprocessing
Wenn Sie sich die Speichernutzung in Python 3 ansehen
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
SendKeys in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
[Tipps] Leicht lesbares Schreiben beim Verbinden von Funktionen in Python
Wenn der Codec das Byte nicht dekodieren kann, wird es in Python angezeigt
Wenn ich matplotlib in Python versuche, heißt es'cairo.Context '.
[Python, CPython] GC-Verhalten beim Auslösen einer Ausnahme
Vorsichtsmaßnahmen beim Umgang mit Kontrollstrukturen in Python 2.6
Hinweis zur Codierung bei LANG = C in Python
Zeichenkodierung beim Umgang mit Dateien in Python 3
Verhalten bei Container Trainable = False in Keras
Ich habe versucht, das Verhalten von E / A-Eventlets in Python nicht zu blockieren