Wie kann ich eine Liste von Listen effizient deduplizieren und gleichzeitig die Ordnung wahren?

Barbara Streisand
Freigeben: 2024-11-23 15:24:25
Original
566 Leute haben es durchsucht

How Can I Efficiently Deduplicate a List of Lists While Maintaining Order?

Effizientes Entfernen von Duplikaten aus einer Liste von Listen

Bei einer Liste von Listen besteht das Ziel darin, doppelte Elemente zu entfernen und gleichzeitig die Reihenfolge beizubehalten. Das Konvertieren von Listen in Tupel, um Mengen zu nutzen, wäre zwar unkompliziert, aber ineffizient.

Verwendung von itertools.groupby()

itertools bietet eine bemerkenswerte Lösung:

import itertools

k.sort()
list(k for k,_ in itertools.groupby(k))
Nach dem Login kopieren

Dieser Ansatz zeichnet sich aus durch:

  • Sortierung der Listen zur Ausrichtung Duplikate.
  • Gruppieren der Listen basierend auf Elementen, wobei jede Gruppe durch ihr erstes Vorkommen dargestellt wird.
  • Konvertieren der Gruppenschlüssel (Duplikate entfernt) zurück in eine Liste.

Benchmark-Analyse

Umfangreiches Benchmarking zeigt, dass „Groupby“ im Allgemeinen andere Methoden für große Eingabelisten übertrifft. Bei kleinen Listen mit wenigen Duplikaten ist der „Loop-in“-Ansatz jedoch möglicherweise etwas schneller.

Optimierung für bestimmte Anwendungen

Wenn die Leistung im Vordergrund steht, sollten Sie Folgendes berücksichtigen:

  • Heuristische Eingabeanalyse: Erkennen von Eingabemerkmalen zur Steuerung des Algorithmus Auswahl.
  • Alternative Datenstrukturen: Beurteilung, ob ein Satz von Tupeln eine geeignetere Darstellung für die Daten wäre.
  • Probabilistische Modellierung: Analysieren die Verteilung von Duplikaten zur Optimierung von Leistungskennzahlen.

Das obige ist der detaillierte Inhalt vonWie kann ich eine Liste von Listen effizient deduplizieren und gleichzeitig die Ordnung wahren?. 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