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

Susan Sarandon
Freigeben: 2024-10-20 08:05:29
Original
121 Leute haben es durchsucht

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

<code class="python">any(i in a for i in b)</code>
Nach dem Login kopieren

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

2. Schnittmenge festlegen

<code class="python">bool(set(a) & set(b))</code>
Nach dem Login kopieren

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

3. Hybrid-Set-Schnittpunkt

<code class="python">a = set(a)
any(i in a for i in b)</code>
Nach dem Login kopieren

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 somit schneller als die herkömmliche Mengenschnittmenge.

4. Isdisjoint-Methode

<code class="python">not set(a).isdisjoint(b)</code>
Nach dem Login kopieren

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)
  • Hybridmengen-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 Satzmitgliedschaftsprü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 gemeinsam genutzter Elemente

Best Practices

  • Verwenden Sie für kleine Listen (< 10 Elemente) die isdisjoint-Methode.
  • 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 das erste Argument.
  • Für Listen mit wenigen oder keinen gemeinsamen Elementen ist die isdisjoint-Methode im Allgemeinen effizienter.

Das obige ist der detaillierte Inhalt vonWie überprüfe ich in Python, ob sich Elemente aus einer Liste mit einer anderen überschneiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!