„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie überprüfe ich in Python, ob sich Elemente aus einer Liste mit einer anderen überschneiden?

Wie überprüfe ich in Python, ob sich Elemente aus einer Liste mit einer anderen überschneiden?

Veröffentlicht am 08.11.2024
Durchsuche:395

How Do I Check if Elements from One List Overlap with Another in Python?

Testen von Listenüberlappungen in Python

Einführung

In Python ist die Bestimmung, ob Elemente aus einer Liste in einer anderen Liste vorhanden sind, für verschiedene Datenbearbeitungsaufgaben von entscheidender Bedeutung. In diesem Artikel werden verschiedene Methoden zum Testen dieser Überschneidung, zur Bewertung ihrer Effizienz und zur Bereitstellung von Best Practices untersucht.

Ansätze

1. Generatorausdruck

any(i in a for i in b)

Diese Methode durchläuft eine Liste und prüft auf Mitgliedschaft in der anderen und gibt „True“ zurück, wenn eine Übereinstimmung vorliegt gefunden. Seine zeitliche Komplexität beträgt O(n), wobei n die Länge der größeren Liste ist.

2. Set Intersection

bool(set(a) & set(b))

Dieser Ansatz wandelt beide Listen in Mengen um und findet ihren Schnittpunkt. Wenn die Schnittmenge nicht leer ist, wird True zurückgegeben. Die zeitliche Komplexität im ungünstigsten Fall dafür beträgt O(n·m), wobei n und m die Längen der Listen sind.

3. Hybrid-Set-Schnittpunkt

a = set(a)
any(i in a for i in b)

Diese Methode konvertiert nur eine Liste in eine Menge und durchläuft die andere Liste, wobei sie auf Mengenzugehörigkeit prüft. Es vermeidet die Erstellung von Zwischenmengen und ist damit schneller als die herkömmliche Mengenschnittmenge.

4. Isdisjoint-Methode

not set(a).isdisjoint(b)

Dieser Ansatz verwendet die isdisjoint-Methode eingefrorener Mengen, um zu bestimmen, ob sie gemeinsame Elemente haben. Ist dies nicht der Fall, ist das Ergebnis „False“; andernfalls ist es wahr.

Effizienzvergleich

Worst Case:

  • Generatorausdruck: O(n)
  • Schnittmenge festlegen: O(n m)
  • Hybride Schnittmenge: O(n m)
  • Isdisjunkte Methode: O(1)

In den meisten Fällen ist die isdisjunkte Methode Die Methode ist am schnellsten, da sie von zeitkonstanten Satzzugehörigkeitsprüfungen profitiert.

Bester Fall für Generatorausdruck:

  • Wenn die ersten paar Elemente der Listen überlappen. In diesem Fall kann der Generatorausdruck schnell True zurückgeben.

Zu berücksichtigende Faktoren:

  • Listengröße
  • Verteilung von Elemente innerhalb der Listen
  • Häufigkeit gemeinsamer Elemente

Best Practices

  • Für kleine Listen (
  • Wenn die Listenstrukturen vorhersehbar (z. B. sortiert) sind, ist der Generatorausdruck möglicherweise schneller.
  • Wenn zwischen den Listen ein erheblicher Größenunterschied besteht, verwenden Sie die isdisjoint-Methode mit der kleineren Liste als erstes Argument.
  • Für Listen mit wenigen oder keinen gemeinsamen Elementen ist die isdisjoint-Methode im Allgemeinen effizienter.
Freigabeerklärung Dieser Artikel wird reproduziert unter: 1729382599 Wenn ein Verstoß vorliegt, wenden Sie sich bitte an [email protected], um ihn zu löschen.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3