Heim >Backend-Entwicklung >Python-Tutorial >Wie können wir aufeinanderfolgende Duplikate effizient aus einer Liste entfernen und gleichzeitig eindeutige Elemente in Python beibehalten?

Wie können wir aufeinanderfolgende Duplikate effizient aus einer Liste entfernen und gleichzeitig eindeutige Elemente in Python beibehalten?

DDD
DDDOriginal
2024-12-11 19:12:12117Durchsuche

How Can We Efficiently Remove Consecutive Duplicates from a List While Preserving Unique Elements in Python?

Aufeinanderfolgende Duplikate eliminieren und unterschiedliche Elemente beibehalten

Bei der Arbeit mit Listen ist es oft notwendig, aufeinanderfolgende Duplikate zu entfernen. Es stellt sich die Frage: Wie können wir solche Elemente effizient entfernen und gleichzeitig unterschiedliche Elemente beibehalten?

Ein Ansatz besteht darin, die Liste zu durchlaufen und jedes Element mit seinem Nachfolger zu vergleichen. Wenn sie identisch sind, löschen wir das aktuelle Element. Diese Methode ist zwar funktionsfähig, aber relativ ineffizient und es mangelt ihr an pythonischer Eleganz.

Verwendung von GroupBy zum eleganten Entfernen von Duplikaten

Das Python-itertools-Modul bietet eine leistungsstarke Funktion namens „groupby“. kann aufeinanderfolgende Elemente effizient gruppieren. Durch die Verwendung von Groupby können wir unser Ziel mit weniger Codezeilen und mehr Klarheit erreichen.

Für den ersten Teil der Frage (Eindeutige Elemente finden) können wir Groupby verwenden, um aufeinanderfolgende Elemente zu gruppieren und dann die Schlüssel auszuwählen (die eindeutige Elemente darstellen).

from itertools import groupby

L = [1,1,1,1,1,1,2,3,4,4,5,1,2]
unique_elements = [key for key, _group in groupby(L)]

Ausgabe:

[1, 2, 3, 4, 5, 1, 2]

Bewahrung unterschiedlicher Elemente unter Verwendung Summe

Um die Lösung weiter zu verfeinern, müssen wir Elemente eliminieren, die aufeinanderfolgende Duplikate haben. Auch hier kommt uns Groupby zu Hilfe. Indem wir die Länge jeder Gruppe überprüfen, können wir feststellen, ob ein Element eindeutig ist oder nicht.

distinct_elements = [k for k, g in groupby(L) if len(list(g)) < 2]

Ausgabe:

[2, 3, 5, 1, 2]

Alternativ können wir einen Generatorausdruck verwenden, um die Erstellung zu vermeiden Erstellen Sie eine temporäre Liste für jede Gruppe und berechnen Sie stattdessen die Summe des Generators:

distinct_elements = [k for k, g in groupby(L) if sum(1 for i in g) < 2]

Dies sorgt für eine kompaktere und effizientere Implementierung der Lösung, wodurch aufeinanderfolgende Duplikate effektiv eliminiert werden Bewahrung verschiedener Elemente.

Das obige ist der detaillierte Inhalt vonWie können wir aufeinanderfolgende Duplikate effizient aus einer Liste entfernen und gleichzeitig eindeutige Elemente in Python beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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