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.
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.
Worst Case:
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:
Zu berücksichtigende Faktoren:
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