5 Methoden zum Entfernen doppelter Elemente aus Python-Listen

In diesem Tutorial erfahren Sie, wie Sie doppelte Elemente aus Python-Listen entfernen.

Wenn Sie mit Listen in Python arbeiten, müssen Sie manchmal nur mit eindeutigen Elementen in der Liste arbeiten – indem Sie die Duplikate entfernen.

Es gibt verschiedene Möglichkeiten, wie Sie dies tun können. In diesem Tutorial gehen wir auf fünf solcher Techniken ein.

Grundlagen von Python-Listen

Beginnen wir unsere Diskussion mit einer Wiederholung der Grundlagen von Python-Listen.

Python-Listen sind veränderlich. Sie können sie also an Ort und Stelle ändern, indem Sie Elemente zur Liste hinzufügen und daraus entfernen. Darüber hinaus sind Python-Listen Sammlungen von Elementen, die nicht unbedingt eindeutig sind.

Wie behalten Sie also nur die einzigartigen Elemente bei und entfernen die doppelten oder sich wiederholenden Elemente?

Nun, Sie können dies auf verschiedene Arten tun. Sie können entweder eine neue Liste erstellen, die nur die eindeutigen Elemente in der ursprünglichen Liste enthält. Oder Sie können die ursprüngliche Liste an Ort und Stelle ändern und die doppelten Elemente entfernen.

Wir werden diese in diesem Tutorial im Detail lernen.

Methoden zum Entfernen von Duplikaten aus Python-Listen

Nehmen wir ein reales Beispiel. Angenommen, Sie sind auf der Geburtstagsfeier Ihres Freundes.🎊🎉

In der angezeigten Sammlung von Süßigkeiten sehen Sie, dass sich einige Artikel wiederholen. Sie möchten diese doppelten Artikel jetzt aus der Liste der Süßigkeiten entfernen.

Lassen Sie uns eine Süßigkeitenliste erstellen, die alle Artikel im obigen Bild enthält.

sweets = ["cupcake","candy","lollipop","cake","lollipop","cheesecake","candy","cupcake"]

In der obigen Süßigkeitenliste werden die Elemente „Süßigkeit“ und „Cupcake“ zweimal wiederholt. Verwenden wir diese Beispielliste, um die doppelten Elemente zu entfernen.

Durchlaufen Sie Python-Listen, um Duplikate zu entfernen

Die einfachste Methode besteht darin, eine neue Liste zu erstellen, die jedes Element genau einmal enthält.

Lesen Sie die folgende Codezelle durch:

unique_sweets = []
for sweet in sweets:
  if sweet not in unique_sweets:
    unique_sweets.append(sweet)

print(unique_sweets)

# Output
['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake']
  • Wir initialisieren eine leere Liste unique_sweets.
  • Während wir die Süßigkeitenliste durchlaufen, greifen wir auf jede Süßigkeit zu.
  • Wenn süß nicht bereits in der Liste unique_sweets vorhanden ist, fügen wir es mit der Methode .append() am Ende der Liste unique_sweets hinzu.

Angenommen, Sie stoßen auf einen sich wiederholenden Artikel, z. B. das zweite Vorkommen von „Süßigkeiten“ in der Süßigkeitenliste. Dies wird nicht zur Liste unique_sweets hinzugefügt, da es bereits vorhanden ist: sweet not in unique_sweets wird für das zweite Vorkommen von „cupcake“ und „candy“ als „False“ ausgewertet.

Daher kommt bei dieser Methode jeder Eintrag genau einmal in der unique_sweets-Liste vor – ohne Wiederholung.

Verwenden Sie das Listenverständnis, um Duplikate zu entfernen

Sie können auch list comprehension verwenden, um die Liste unique_sweets zu füllen.

Möchten Sie die Grundlagen des Listenverständnisses auffrischen?

▶️ Sehen Sie sich das Tutorial zum Listenverständnis in Python an.

Lassen Sie uns den Listenverständnisausdruck verwenden: [output for item in iterable if condition is True] um die obige Schleife kurz umzuschreiben.

unique_sweets = []
[unique_sweets.append(sweet) for sweet in sweets if sweet not in unique_sweets]
print(unique_sweets)

# Output
['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake']

Obwohl Sie eine neue Liste erstellen, füllen Sie die erstellte Liste nicht mit Werten. Dies liegt daran, dass die Ausgabe die Operation .append() an der Liste unique_sweets ist.

Um doppelte Elemente aus Python-Listen zu entfernen, können Sie auch integrierte Listenmethoden verwenden, und wir werden dies im nächsten Abschnitt behandeln.

Verwenden Sie integrierte Listenmethoden, um Duplikate zu entfernen

Sie können die Python-Listenmethoden .count() und .remove() verwenden, um doppelte Elemente zu entfernen.

– Mit der Syntax list.count(value) gibt die Methode .count() zurück, wie oft value in list vorkommt. Die Anzahl der sich wiederholenden Elemente ist also größer als 1.

– list.remove(value) entfernt das erste Vorkommen von value aus der Liste.

Unter Verwendung des Obigen haben wir den folgenden Code.

for sweet in sweets:
  # check if the count of sweet is > 1 (repeating item)
  if sweets.count(sweet) > 1:
  # if True, remove the first occurrence of sweet
    sweets.remove(sweet)

print(sweets)

# Output
['cake', 'lollipop', 'cheesecake', 'candy', 'cupcake']

Da die Methode .remove() nur das erste Vorkommen eines Werts entfernt, können Sie sie nicht verwenden, um Elemente zu entfernen, die mehr als zweimal vorkommen.

  • Wenn ein bestimmtes Element dupliziert wird (genau zweimal vorkommt), entfernt diese Methode das erste Vorkommen.
  • Wenn ein bestimmtes Element K-mal wiederholt wird, bleiben nach dem Ausführen des obigen Codes immer noch K-1-Wiederholungen übrig.

Aber im Allgemeinen beziehen wir uns, wenn wir Duplikate sagen, normalerweise auf alle Wiederholungen.

Um diesen Fall zu handhaben, könnten Sie die obige Schleife ändern, um alle Wiederholungen bis auf eine zu entfernen. Anstatt eine if-Bedingung zu verwenden, um die Anzahl eines bestimmten Elements zu überprüfen, könnten Sie eine while-Schleife ausführen, um wiederholt Duplikate zu entfernen, bis die Anzahl aller Elemente in der Liste 1 ist.

Die Liste Süßigkeiten enthält jetzt 2 Wiederholungen von „Cupcake“ und 3 Wiederholungen von „Candy“.

sweets = ["cupcake","candy","lollipop","cake","lollipop","candy","cheesecake","candy","cupcake"]

Sie können eine While-Schleife verwenden, um Wiederholungen zu entfernen, wie unten gezeigt. Die While-Schleife läuft so lange weiter, wie die Anzahl von Süßigkeiten in Süßigkeiten größer als 1 ist. Wenn nur noch ein Vorkommen verbleibt, wird die Bedingung sweets.count(sweet) > 1 zu False, und die Schleife springt zum nächsten Element.

for sweet in sweets:
  # check if the count of sweet is > 1 (repeating item)
  while(sweets.count(sweet) > 1):
  # repeatedly remove the first occurrence of sweet until one occurrence remains.
    sweets.remove(sweet)

print(sweets)
# Output
['cake', 'lollipop', 'cheesecake', 'candy', 'cupcake']

Die Verwendung von verschachtelten Schleifen ist jedoch möglicherweise nicht sehr effizient. Sie können daher eine der anderen besprochenen Techniken verwenden, wenn Sie mit großen Listen arbeiten.

Bisher haben wir folgendes gelernt:

  • Methoden zum Entfernen doppelter Elemente aus Python-Listen – durch Erstellen neuer Listen – die nur eindeutige Elemente enthalten
  • Eingebaute Listenmethoden .count() und .remove(), um die Liste an Ort und Stelle zu ändern

Es gibt einige in Python eingebaute Datenstrukturen, die erfordern, dass die Werte alle eindeutig sind – ohne Wiederholung. Daher können wir eine Python-Liste in eine dieser Datenstrukturen umwandeln, um Duplikate zu entfernen. Und wandeln Sie sie dann wieder in eine Liste um. Wie das geht, erfahren Sie in den nächsten Abschnitten.

Python-Liste in einen Satz umwandeln, um Duplikate zu entfernen

Python-Sets sind Sammlungen von Elementen, die alle einzigartig sind. Daher ist die Anzahl der in der Menge vorhandenen Elemente (angegeben durch len()) gleich der Anzahl der vorhandenen eindeutigen Elemente.

Sie können jedes Python-Iterable mit der folgenden Syntax in ein Set umwandeln: set(iterable).

Lassen Sie uns nun die Liste Süßigkeiten in ein Set umwandeln und die Ausgabe untersuchen.

set(sweets)
# Output
{'cake', 'candy', 'cheesecake', 'cupcake', 'lollipop'}

Aus der Ausgabe in der obigen Codezelle sehen wir, dass jedes Element genau einmal vorkommt und die Duplikate entfernt wurden.

Beachten Sie auch, dass die Reihenfolge der Artikel nicht unbedingt mit der Reihenfolge in der ursprünglichen Süßigkeitenliste übereinstimmt. Dies liegt daran, dass ein Python-Set-Objekt nicht nur eine Sammlung eindeutiger Elemente ist, sondern auch eine ungeordnete Sammlung.

Nachdem wir die Duplikate entfernt haben, indem wir die Liste in einen Satz umgewandelt haben, können wir sie wieder in eine Liste umwandeln, wie unten gezeigt.

unique_sweets = list(set(sweets))
print(unique_sweets)

# Output
['cake', 'cheesecake', 'candy', 'cupcake', 'lollipop']

Verwenden Sie Listenelemente als Wörterbuchschlüssel, um Duplikate zu entfernen

Das Python-Wörterbuch ist eine Sammlung von Schlüssel-Wert-Paaren, bei denen die Schlüssel die Werte eindeutig identifizieren.

Sie können ein Python-Wörterbuch mit der Methode .fromkeys() mit der folgenden Syntax erstellen: dict.fromkeys(keys, values). Hier sind Schlüssel und Werte Iterables, die die Schlüssel bzw. Werte des Wörterbuchs enthalten.

  • keys ist ein erforderlicher Parameter und kann jede Python-Iterable sein, die den Schlüsseln des Wörterbuchs entspricht.
  • values ​​ist ein optionaler Parameter. Wenn Sie die Werte iterable nicht angeben, wird der Standardwert None verwendet.

Ohne Angabe der Werte gibt dict.fromkeys(sweets) ein Python-Wörterbuch zurück, in dem die Werte auf None gesetzt sind – dem Standardwert. Die folgende Codezelle erklärt dies.

dict.fromkeys(sweets)

# Output
{'cake': None,
 'candy': None,
 'cheesecake': None,
 'cupcake': None,
 'lollipop': None}

Wie im vorherigen Abschnitt können wir das Wörterbuch wieder in eine Liste umwandeln, wie unten gezeigt.

unique_sweets = list(dict.fromkeys(sweets))
print(unique_sweets)
# Output
['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake']

Aus der obigen Ausgabe können wir sehen, dass die doppelten Artikel aus der Liste Süßigkeiten entfernt wurden.

Zusammenfassung👩‍🏫

Hier ist eine Zusammenfassung der verschiedenen Methoden, mit denen Sie doppelte Elemente oder Wiederholungen aus Python-Listen entfernen können.

  • Verwenden Sie die Python-Listenmethode .append(), um sich nicht wiederholende Elemente zu einer neuen Liste hinzuzufügen. Die neue Liste enthält jedes Element in der ursprünglichen Liste genau einmal und entfernt alle Wiederholungen. Sie können dies auch mithilfe des Listenverständnisses tun.
  • Verwenden Sie die integrierten Methoden .count() und .remove(), um Elemente zu entfernen, die genau zweimal vorkommen. Dasselbe kann in eine While-Schleife eingefügt werden, um alle zusätzlichen Vorkommen zu entfernen.
  • Wandeln Sie eine Python-Liste in einen Satz um, um nur die eindeutigen Elemente beizubehalten.
  • Verwenden Sie dict.fromkeys(list), um alle Duplikate aus der Liste zu entfernen, da es keine Wiederholungsschlüssel des Wörterbuchs geben sollte.

Sehen Sie sich als Nächstes Python-Projekte zum Üben und Lernen an. Oder erfahren Sie, wie Sie den Index eines Elements in Python-Listen finden. Viel Spaß beim Lernen!