Python Duplikate aus einer Liste entfernen
Es gibt viele Möglichkeiten, Duplikate aus einer Python-Liste zu entfernen.
- Verwendung einer temporären Liste und Schleifen
- Verwendung der eingebauten Methode set()
- Verwendung von Wörterbuchschlüsseln
- Liste count() Funktion
- Listenverständnis
Duplikate aus einer Liste entfernen
Python-Listen können doppelte Elemente enthalten. Lassen Sie uns Beispiele für das Entfernen doppelter Elemente auf verschiedene Weise ansehen.
1. Verwendung einer temporären Liste
Dies ist der brute-force Weg, um doppelte Elemente aus einer Liste zu entfernen. Wir werden eine temporäre Liste erstellen und Elemente nur dann hinzufügen, wenn sie nicht vorhanden sind.
ints_list = [1, 2, 3, 4, 3, 2]
temp = []
for x in ints_list:
if x not in temp:
temp.append(x)
ints_list = temp
print(f'Updated List after removing duplicates = {temp}')
Ausgabe: Aktualisierte Liste nach dem Entfernen von Duplikaten=[1, 2, 3, 4] Empfohlene Lektüre: Python f-strings
2. set() Funktion
Ein Python-Set hat keine doppelten Elemente. Wir können die eingebaute Funktion set() verwenden, um die Liste in ein Set umzuwandeln, und dann die Funktion list() verwenden, um es zurück in eine Liste umzuwandeln.
ints_list = [1, 2, 3, 4, 3, 2]
ints_list1 = list(set(ints_list))
print(ints_list1) # [1, 2, 3, 4]
3. Listenelemente als Wörterbuchschlüssel auflisten
Wir wissen, dass die Schlüssel eines Dictionaries einzigartig sind. Die Klasse dict hat die Methode fromkeys(), die ein iterierbares Objekt akzeptiert, um das Dictionary mit Schlüsseln aus diesem iterierbaren Objekt zu erstellen.
ints_list = [1, 2, 3, 4, 3, 2]
ints_list2 = list(dict.fromkeys(ints_list))
print(ints_list2) # [1, 2, 3, 4]
4. Die Funktion count() für Listen - nicht empfohlen
Die Methode count() der Liste gibt die Anzahl der Vorkommen des Wertes zurück. Wir können sie zusammen mit der Methode remove() verwenden, um die doppelten Elemente aus der Liste zu entfernen.
ints_list = [1, 2, 3, 4, 3, 2]
for x in ints_list:
if ints_list.count(x) > 1:
ints_list.remove(x)
print(ints_list) # [1, 2, 3, 4]
HINWEIS: Wie im Kommentar unten erwähnt, ist die Verwendung der count()-Funktion beim Entfernen des Elements aus demselben Iterator nicht ratsam, da dies zu unerwünschten Ergebnissen führen kann. Zum Beispiel:
values = [87, 94, 45, 94, 94, 41, 65, 94, 41, 99, 94, 94, 94]
for x in values:
if values.count(x) > 1:
values.remove(x)
print(values) # [87, 45, 65, 41, 99, 94, 94] - 94 is still present twice
5. Listenverständnis
Wir können aus einem Iterable eine Liste mit der Listen-Komprehension erstellen. Diese Technik ist die gleiche wie die Verwendung einer temporären Liste und einer Schleife, um doppelte Elemente zu entfernen. Aber sie reduziert die Anzahl der Codezeilen.
int_list = [1, 2, 3, 4, 3, 2]
temp = []
[temp.append(x) for x in ints_list if x not in temp]
print(temp) # [1, 2, 3, 4]
Beste Methode zum Entfernen von Duplikaten aus einer Liste
Wenn Sie keine doppelten Elemente möchten, sollten Sie Set verwenden. Aber wenn Sie die doppelten Werte aus einer Liste entfernen müssen, würde ich die count()-Funktion bevorzugen, da sie kein weiteres temporäres Set- oder Listenobjekt erstellt. Es ist also speichereffizienter.
