In diesem Tutorial lernen Sie, wie Sie doppelte Elemente aus Python-Listen entfernen können.
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 Lernprogramm stellen wir Ihnen fünf dieser Techniken vor.
Grundlagen von Python-Listen
Beginnen wir unsere Diskussion mit einem Überblick über die Grundlagen von Python-Listen.
Python-Listen sind veränderbar. Sie können sie also an Ort und Stelle ändern, indem Sie Elemente zur Liste hinzufügen oder aus ihr entfernen. Darüber hinaus sind Python-Listen Sammlungen von Elementen, die nicht unbedingt eindeutig sind.
Wie können Sie also nur die eindeutigen Elemente beibehalten und die doppelten oder sich wiederholenden Elemente entfernen ?
Nun, Sie können dies auf verschiedene Weise tun. Sie können entweder eine neue Liste erstellen, die nur die eindeutigen Elemente der ursprünglichen Liste enthält. Oder Sie können die ursprüngliche Liste an Ort und Stelle ändern und die doppelten Elemente entfernen.
In diesem Lernprogramm werden wir diese Möglichkeiten im Detail kennenlernen.
Methoden zum Entfernen von Duplikaten aus Python-Listen
Nehmen wir ein Beispiel aus der Praxis. Nehmen wir an, Sie sind auf der Geburtstagsparty Ihres Freundes.🎊🎉
In der angezeigten Sammlung von Süßigkeiten sehen Sie, dass sich einige Artikel wiederholen. Sie möchten nun diese doppelten Einträge aus der Liste der Süßigkeiten entfernen.
Lassen Sie uns eine Liste mit Süßigkeiten
erstellen, die alle Elemente aus dem obigen Bild enthält.
sweets = ["cupcake", "candy", "lollipop", "cake", "lollipop", "cheesecake", "candy", "cupcake"]
In der obigen Liste der Süßigkeiten
werden die Elemente “Süßigkeiten” und “Muffin” zweimal wiederholt. Lassen Sie uns diese Beispielauflistung verwenden, um die doppelten Einträge zu entfernen.
Iterieren Sie über 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 sich die folgende Codezelle durch:
unique_sweets = []
for sweet in sweets:
if sweet not in unique_sweets:
unique_sweets.append(süß)
print(unique_sweets)
# Ausgabe
['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake']
- Wir initialisieren eine leere Liste
unique_sweets
. - Während wir in einer Schleife durch die
Liste der Süßigkeiten
gehen, greifen wir auf jede einzelneSüßigkeit
zu. - Wenn die
Süßigkeit
noch nicht in der Listeunique_sweets
vorhanden ist, fügen wir sie mit der Methode.append()
an das Ende der Listeunique_sweets
an.
Angenommen, Sie stoßen auf ein sich wiederholendes Element, z.B. das zweite Vorkommen von ‘candy’ in der Liste sweets
. Dies wird der Liste unique_sweets
nicht hinzugefügt, da es bereits vorhanden ist: sweet not in unique_sweets
wertet für das zweite Vorkommen von ‘cupcake’ und ‘candy’ auf False
.
Daher kommt bei dieser Methode jedes Element genau einmal in der Liste unique_sweets
vor, ohne dass es wiederholt wird.
Listenverständnis verwenden, um Duplikate zu entfernen
Sie können auch das Listenverständnis verwenden, um die Liste unique_sweets
aufzufüllen.
Möchten Sie die Grundlagen des Listenverstehens auffrischen?
▶️ Sehen Sie sich das Tutorial zum Listenverständnis in Python an.
Lassen Sie uns den Ausdruck list comprehension verwenden: [output for item in iterable if condition is True], um die obige Schleife prägnant umzuschreiben.
unique_sweets = []
[unique_sweets.append(sweet) for sweet in sweets if sweet not in unique_sweets]
print(unique_sweets)
# Ausgabe
['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake']
Auch wenn Sie eine neue Liste erstellen, füllen Sie die erstellte Liste nicht mit Werten auf. Der Grund dafür ist, dass die Ausgabe die Operation .append()
an die Liste unique_sweets
ist.
Um doppelte Elemente aus Python-Listen zu entfernen, können Sie auch eingebaute Listenmethoden verwenden, auf die wir im nächsten Abschnitt eingehen werden.
Eingebaute Listenmethoden verwenden, um Duplikate zu entfernen
Sie können die Python-Listenmethoden .count()
und .remove()
verwenden, um doppelte Einträge zu entfernen.
– Mit der Syntax list.count(value) gibt die Methode .
count()
die Anzahl der Wiederholungenvon Werten
in derListe
zurück. Die Anzahl der sich wiederholenden Elemente ist also größer als 1.– list.remove(Wert) entfernt das erste Vorkommen von Wert aus der Liste.
Daraus ergibt sich der folgende Code.
for sweet in sweets:
# Prüfen Sie, ob die Anzahl der Süßigkeiten > 1 ist (wiederkehrendes Element)
if sweets.count(süß) > 1:
# wenn True, entfernen Sie das erste Vorkommen von sweet
sweets.remove(süß)
print(Bonbons)
# Ausgabe
['Kuchen', 'Lutscher', 'Käsekuchen', 'Bonbons', 'Muffin']
Da die Methode .remove()
nur das erste Vorkommen eines Wertes entfernt, können Sie sie nicht verwenden, um Elemente zu entfernen, die mehr als zweimal vorkommen.
- Wenn ein bestimmter Eintrag doppelt vorkommt (genau zweimal), entfernt diese Methode das erste Vorkommen.
- Wenn ein bestimmtes Element
K-mal
wiederholt wird, bleiben nach Ausführung des obigen Codes nochK-1
Wiederholungen übrig.
Aber wenn wir von Duplikaten sprechen, meinen wir in der Regel alle Wiederholungen.
Um diesen Fall zu behandeln, könnten Sie die obige Schleife so abändern, dass alle Wiederholungen außer einer entfernt werden. Anstatt eine if-Bedingung
zu verwenden, um die Anzahl eines bestimmten Elements zu überprüfen, könnten Sie eine while-Schleife
laufen lassen, um wiederholt Wiederholungen zu entfernen, bis die Anzahl aller Elemente in der Liste 1 beträgt.
Die Liste sweets
enthält nun 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, wie die Anzahl der Süßigkeiten in sweets größer als 1 ist. Wenn nur noch 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:
# Prüfen Sie, ob die Anzahl der Bonbons > 1 ist (wiederholtes Element)
while(sweets.count(sweet) > 1):
# Entfernen Sie wiederholt das erste Vorkommen von sweet, bis ein Vorkommen übrig bleibt.
sweets.remove(sweet)
print(Bonbons)
# Ausgabe
['Kuchen', 'Lutscher', 'Käsekuchen', 'Bonbon', 'Muffin']
Die Verwendung von verschachtelten Schleifen ist jedoch möglicherweise nicht sehr effizient, so dass Sie eine der anderen besprochenen Techniken in Betracht ziehen könnten, wenn Sie mit großen Listen arbeiten.
Bislang haben wir Folgendes gelernt:
- Methoden, um doppelte Elemente aus Python-Listen zu entfernen, indem Sie neue Listen erstellen, die nur eindeutige Elemente enthalten
- Eingebaute Listenmethoden
.count()
und.remove()
zum Ändern der Liste an Ort und Stelle
Es gibt einige in Python integrierte Datenstrukturen, bei denen alle Werte eindeutig sein müssen – ohne Wiederholungen. Daher können wir eine Python-Liste in eine dieser Datenstrukturen umwandeln, um Duplikate zu entfernen. Und sie dann wieder in eine Liste umwandeln. Wie das geht, erfahren Sie in den nächsten Abschnitten.
Python-Liste in eine Menge umwandeln, um Duplikate zu entfernen
Python-Sets sind Sammlungen von Elementen, die alle eindeutig sind. Daher ist die Anzahl der Elemente in der Menge (angegeben durch len(<set-obj>))
gleich der Anzahl der eindeutigen Elemente in der Menge.
Sie können jede beliebige Python-Iterable in eine Menge umwandeln, indem Sie die Syntax
set(iterable)
verwenden.
Lassen Sie uns nun die Liste sweets in eine Menge umwandeln und die Ausgabe untersuchen.
set(sweets)
# Ausgabe
{'Kuchen', 'Bonbons', 'Käsekuchen', 'Muffins', 'Lutscher'}
Anhand der Ausgabe in der obigen Codezelle sehen wir, dass jeder Artikel genau einmal vorkommt und die Duplikate entfernt wurden.
Beachten Sie auch, dass die Reihenfolge der Elemente nicht unbedingt mit der Reihenfolge in der ursprünglichen Liste sweets übereinstimmt. Das liegt daran, dass ein Python-Set-Objekt nicht nur eine Sammlung von eindeutigen Elementen ist, sondern auch eine ungeordnete Sammlung.
Nachdem wir nun die Duplikate entfernt haben, indem wir die Liste in ein Set umgewandelt haben, können wir sie wieder in eine Liste umwandeln, wie unten gezeigt.
unique_sweets = list(set(sweets))
print(unique_sweets)
# Ausgabe
['Kuchen', 'Käsekuchen', 'Bonbons', 'Muffins', 'Lutscher']
Listenelemente als Dictionary-Schlüssel verwenden, um Duplikate zu entfernen
EinPython-Wörterbuch ist eine Sammlung von Schlüssel-Wert-Paaren, wobei die Schlüssel die Werte eindeutig identifizieren.
Sie können ein Python-Wörterbuch mit der Methode .fromkeys()
mit folgender Syntax erstellen: dict.fromkeys(keys, values)
. Dabei sind keys
und values
iterable, die die Schlüssel bzw. Werte des Wörterbuchs enthalten.
keys
ist ein erforderlicher Parameter und kann eine beliebige 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 StandardwertNone
verwendet.
Ohne Angabe der Werte gibt dict.fromkeys(sweets)
ein Python-Wörterbuch zurück, in dem die Werte auf None
– den Standardwert – gesetzt sind. Die folgende Codezelle erklärt dies.
dict.fromkeys(sweets)
# Ausgabe
{'Kuchen': Keine,
'Süßigkeiten': Keine,
'Käsekuchen': Keine,
'Cupcake': Keine,
'lollipop': Keine}
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)
# Ausgabe
['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake']
Anhand der obigen Ausgabe können wir sehen, dass die doppelten Einträge aus der Liste sweets
entfernt wurden.
Summieren Up👩🏫
Hier eine Zusammenfassung der verschiedenen Methoden, die Sie verwenden können, um doppelte Einträge oder Wiederholungen aus Python-Listen zu entfernen.
- Verwenden Sie die Python-Listenmethode .append(), um nicht-wiederkehrende Elemente zu einer neuen Liste hinzuzufügen. Die neue Liste enthält jedes Element der ursprünglichen Liste genau einmal und entfernt alle Wiederholungen. Sie können dies auch mit List Comprehension tun.
- Verwenden Sie die eingebauten Methoden .count() und .remove(), um Elemente zu entfernen, die genau zweimal vorkommen. Das Gleiche können Sie in eine while-Schleife einbauen, um alle weiteren Vorkommen zu entfernen.
- Verwandeln Sie eine Python-Liste in eine Menge, um nur die eindeutigen Elemente zu behalten.
- Verwenden Sie dict.fromkeys(list), um alle Duplikate aus der Liste zu entfernen, da es keine Wiederholungsschlüssel des Wörterbuchs geben sollte.
Schauen Sie sich als nächstesPython-Projekte zum Üben und Lernen an. Oder lernen Sie, wie man den Index eines Elements in Python-Listen findet. Viel Spaß beim Lernen!