Heim > Backend-Entwicklung > Python-Tutorial > Wie kann man ungeordnete Listen nicht hashbarer Objekte effizient vergleichen?

Wie kann man ungeordnete Listen nicht hashbarer Objekte effizient vergleichen?

Mary-Kate Olsen
Freigeben: 2024-11-15 02:38:02
Original
1030 Leute haben es durchsucht

How to Efficiently Compare Unordered Lists of Non-Hashable Objects?

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)
Nach dem Login kopieren

O(n log n)

Wenn die Objekte bestellbar sind, bietet sortiert eine passende Alternative:

def compare(s, t):
    return sorted(s) == sorted(t)
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage