5 Methoden zum Entfernen doppelter Elemente aus Python-Listen

Entfernen doppelter Elemente aus Python-Listen

In diesem Tutorial erfahren Sie verschiedene Methoden, mit denen Sie Duplikate aus Python-Listen beseitigen können. Oftmals ist es erforderlich, nur mit den einmaligen Elementen einer Liste zu arbeiten und somit Duplikate zu entfernen.

Es gibt verschiedene Ansätze, um dieses Ziel zu erreichen. Wir werden hier fünf solcher Techniken detailliert untersuchen.

Grundlagen von Python-Listen

Lassen Sie uns zunächst die Basis der Python-Listen kurz wiederholen.

Python-Listen sind veränderbar. Das bedeutet, dass Sie Listen direkt bearbeiten können, indem Sie Elemente hinzufügen oder entfernen. Zudem können Python-Listen Elemente enthalten, die nicht zwingend eindeutig sein müssen.

Wie können Sie also sicherstellen, dass nur einmalige Elemente in der Liste verbleiben und doppelte oder wiederholende Einträge entfernt werden?

Hierzu gibt es mehrere Möglichkeiten. Sie können entweder eine neue Liste erstellen, die ausschließlich die einmaligen Elemente der ursprünglichen Liste enthält, oder Sie können die ursprüngliche Liste direkt verändern und die Duplikate dort entfernen.

Diese verschiedenen Methoden werden wir in diesem Tutorial genauer unter die Lupe nehmen.

Methoden zum Entfernen von Duplikaten

Betrachten wir ein praktisches Beispiel. Stellen Sie sich vor, Sie sind auf dem Geburtstag eines Freundes.🎉🎊

Unter den vielen Süßigkeiten, die dort angeboten werden, stellen Sie fest, dass sich einige Artikel wiederholen. Sie möchten nun die doppelten Artikel aus der Liste der Süßigkeiten entfernen.

Erstellen wir also eine Liste, die alle Süßigkeiten des obigen Beispiels enthält:

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

In dieser Liste kommen die Elemente „candy“ und „cupcake“ jeweils zweimal vor. Diese Beispielliste werden wir nun nutzen, um die Duplikate zu entfernen.

Iterieren über Listen zur Entfernung von Duplikaten

Die einfachste Methode ist es, eine neue Liste zu erzeugen, die jedes Element genau einmal enthält.

Betrachten Sie den folgenden Code:

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 namens `unique_sweets`.
  • Wir durchlaufen die Liste `sweets` und greifen auf jedes Element zu.
  • Falls das Element `sweet` noch nicht in `unique_sweets` existiert, wird es mit der Methode `.append()` am Ende der Liste hinzugefügt.

Wenn wir auf ein wiederholtes Element treffen, wie das zweite Vorkommen von „candy“, wird dieses nicht der `unique_sweets` Liste hinzugefügt, da es bereits vorhanden ist. Die Bedingung `sweet not in unique_sweets` wird für jedes zusätzliche Vorkommen von „cupcake“ und „candy“ als „False“ bewertet.

Somit beinhaltet die `unique_sweets` Liste nach diesem Prozess jedes Element genau einmal, ohne jegliche Wiederholung.

Nutzung von List Comprehension zur Duplikatentfernung

Sie können den gleichen Effekt auch mithilfe von List Comprehension erzielen.

Möchten Sie Ihre Kenntnisse über List Comprehension auffrischen?

▶️ Informieren Sie sich über das Tutorial zu List Comprehension in Python.

Nutzen wir den List Comprehension Ausdruck: `[Ausgabe for Element in Iterable if Bedingung ist True]` um die obige Schleife kompakter zu schreiben.

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']

In diesem Fall wird zwar auch eine neue Liste erstellt, diese jedoch nicht durch Werte befüllt, sondern durch die Operation `.append()` auf die Liste `unique_sweets`.

Neben den bisherigen Ansätzen können Sie auch eingebaute Listenmethoden nutzen, um Duplikate zu entfernen, wie wir im nächsten Abschnitt sehen werden.

Nutzung integrierter Listenmethoden

Die Python-Listenmethoden `.count()` und `.remove()` können genutzt werden, um doppelte Elemente zu beseitigen.

  • Die Methode `.count()` mit der Syntax `list.count(value)` gibt zurück, wie oft `value` in der Liste vorkommt. Eine Anzahl größer 1 deutet also auf ein sich wiederholendes Element hin.
  • Mit `list.remove(value)` entfernen Sie das erste Vorkommen von `value` aus der Liste.

Unter Nutzung der oben beschriebenen Methoden können wir folgenden Code nutzen:

for sweet in sweets:
  # Überprüfen ob das Element öfter als einmal vorkommt
  if sweets.count(sweet) > 1:
  # Wenn das der Fall ist, entferne das erste Vorkommen des Elements
    sweets.remove(sweet)

print(sweets)

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

Da `.remove()` nur das erste Vorkommen eines Wertes entfernt, ist diese Methode nicht optimal geeignet, um Elemente zu entfernen, die mehr als zweimal vorkommen.

  • Wenn ein Element sich genau zweimal wiederholt, wird mit dieser Methode das erste Vorkommen entfernt.
  • Wenn ein Element K-mal wiederholt wird, bleiben nach der Ausführung des Codes noch K-1 Wiederholungen übrig.

Normalerweise meinen wir mit „Duplikaten“ jedoch alle Wiederholungen.

Um diesen Fall abzudecken, könnten Sie die obige Schleife anpassen, sodass alle Wiederholungen bis auf eine entfernt werden. Anstatt eine `if`-Bedingung zu nutzen, um die Anzahl eines Elements zu prüfen, könnte eine `while`-Schleife wiederholt Duplikate entfernen, bis alle Elemente nur einmal in der Liste existieren.

Die Liste `sweets` beinhaltet nun 2 Wiederholungen von „cupcake“ und 3 Wiederholungen von „candy“.

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

Eine `while`-Schleife kann verwendet werden, um Wiederholungen zu entfernen, wie hier gezeigt. Die `while`-Schleife wird ausgeführt, solange die Anzahl eines Elements in `sweets` größer als 1 ist. Sobald nur ein Vorkommen übrig ist, wird die Bedingung `sweets.count(sweet) > 1` zu `False` und die Schleife springt zum nächsten Element.

for sweet in sweets:
  # Überprüfe ob das Element mehr als einmal vorkommt
  while(sweets.count(sweet) > 1):
  # Entferne wiederholt das erste Vorkommen, bis nur eines übrig ist.
    sweets.remove(sweet)

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

Die Nutzung verschachtelter Schleifen ist jedoch nicht unbedingt effizient, weshalb bei sehr großen Listen andere vorgestellte Techniken bevorzugt werden sollten.

Bisher haben wir gelernt:

  • Methoden, um doppelte Elemente zu entfernen, indem wir neue Listen erstellen, die nur einmalige Elemente enthalten.
  • Die eingebauten Methoden `.count()` und `.remove()` zur direkten Modifizierung der Liste.

Es gibt in Python Datenstrukturen, die nur eindeutige Werte zulassen. Wir können also eine Python-Liste in eine solche Struktur konvertieren, um Duplikate zu entfernen und diese dann wieder zurück in eine Liste umwandeln. Im nächsten Abschnitt zeigen wir Ihnen wie.

Konvertierung in ein Set zur Duplikatentfernung

Python-Sets sind Sammlungen von Elementen, die alle einzigartig sind. Die Anzahl der Elemente, die in einem Set vorhanden sind, entspricht daher der Anzahl der eindeutigen Elemente.

Jedes Python-Iterable kann in ein Set mit der Syntax `set(iterable)` konvertiert werden.

Konvertieren wir die Liste `sweets` in ein Set und betrachten die Ausgabe:

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

Aus der Ausgabe können wir erkennen, dass jedes Element genau einmal vorkommt und Duplikate entfernt wurden.

Beachten Sie, dass die Reihenfolge der Elemente nicht zwingend mit der ursprünglichen Reihenfolge der Liste `sweets` übereinstimmt, da Python-Sets ungeordnet sind.

Nach dem Entfernen der Duplikate können wir das Set wieder zurück in eine Liste konvertieren, wie unten zu sehen ist:

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

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

Nutzung von Listenelementen als Wörterbuchschlüssel

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

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

  • `keys` ist ein obligatorischer Parameter und kann jedes Python-Iterable sein, das den Schlüsseln des Wörterbuchs entspricht.
  • `values` ist ein optionaler Parameter. Wenn Sie keine Werte angeben, wird der Standardwert `None` genutzt.

Ohne Angabe von Werten, gibt `dict.fromkeys(sweets)` ein Python-Wörterbuch zurück, in dem die Werte auf `None` gesetzt sind (dem Standardwert). Das folgende Codebeispiel verdeutlicht 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 konvertieren, wie unten gezeigt:

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

Wie man in der Ausgabe sieht, wurden die doppelten Elemente der Liste `sweets` entfernt.

Zusammenfassung👩‍🏫

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

  • Nutzen Sie die Python-Listenmethode `.append()` um nicht-wiederholende Elemente zu einer neuen Liste hinzuzufügen. Die neue Liste enthält jedes Element aus der Original-Liste genau einmal und entfernt so alle Wiederholungen. Das gleiche kann auch mit List Comprehension erreicht werden.
  • Nutzen Sie die eingebauten Methoden `.count()` und `.remove()`, um Elemente zu entfernen, die genau zweimal vorkommen. Dies kann in eine `while`-Schleife eingebettet werden, um alle überflüssigen Vorkommen zu entfernen.
  • Konvertieren Sie eine Python-Liste in ein Set um, um nur die einmaligen Elemente zu behalten.
  • Nutzen Sie `dict.fromkeys(list)` um alle Duplikate aus der Liste zu entfernen, da es im Wörterbuch keine sich wiederholenden Schlüssel geben darf.

Als nächstes empfehlen wir Ihnen, einige Python-Projekte zum Üben zu bearbeiten. Oder Sie lernen, wie man den Index eines Elements in Python-Listen findet. Viel Spaß beim Lernen!