Effizienter Vergleich ungeordneter Listen nicht hashbarer Objekte
Ungeordnete Listen (keine Mengen) stellen eine Herausforderung dar, wenn sie auf Gleichheit verglichen werden, da ihre Elemente können in beliebiger Reihenfolge vorliegen. Diese Schwierigkeit wird noch ausgeprägter, wenn es um nicht hashbare Objekte geht, wie etwa Instanzen benutzerdefinierter Klassen.
Um solche Vergleiche zu erleichtern, gibt es verschiedene Ansätze mit unterschiedlicher zeitlicher Komplexität:
O(n)
Für hashbare Objekte bietet Counter eine optimale Lösung:
def compare(s, t): return Counter(s) == Counter(t)
O(n log n)
Wenn die Objekte bestellbar sind, bietet sortiert eine passende Alternative:
def compare(s, t): return sorted(s) == sorted(t)
O(n * n)
Wenn weder Hashbarkeit noch Bestellbarkeit verfügbar sind, kann ein direkter Ansatz mit Gleichheit verwendet werden:
def compare(s, t): t = list(t) # make a mutable copy try: for elem in s: t.remove(elem) except ValueError: return False return not t
Durch Auswahl der geeigneten Lösung basierend auf der Art Ihrer Objekte können Sie ungeordnete Listen effizient vergleichen, selbst wenn die Elemente sind nicht hashbar oder bestellbar.
Das obige ist der detaillierte Inhalt vonWie kann man ungeordnete Listen nicht hashbarer Objekte effizient vergleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!