Elemente mit aufeinanderfolgenden Duplikaten entfernen
Eine häufige Aufgabe in der Datenverarbeitung ist das Entfernen aufeinanderfolgender Duplikate aus einer Liste. Eine einfache Python-Implementierung könnte wie folgt aussehen:
list = [1,1,1,1,1,1,2,3,4,4,5,1,2] i = 0 while i < len(list)-1: if list[i] == list[i+1]: del list[i] else: i = i+1
Dieser Ansatz entfernt wiederholte Elemente, was zu einer Ausgabe wie [1, 2, 3, 4, 5, 1, 2] führt.
Eliminieren von Elementen, deren Werte sich nacheinander wiederholen
Ein verbessertes Ziel besteht jedoch darin, ganze Elemente zu entfernen, deren Werte sich wiederholen nacheinander, was zu einer Ausgabe wie [2, 3, 5, 1, 2] führt. Der vorherige Ansatz kann geändert werden:
list = [1,1,1,1,1,1,2,3,4,4,5,1,2] i = 0 dupe = False while i < len(list)-1: if list[i] == list[i+1]: del list[i] dupe = True elif dupe: del list[i] dupe = False else: i += 1
Dieser Ansatz ist zwar funktional, könnte aber vereinfacht werden.
Eine elegantere Lösung
Python bietet mehr Ausdruckswerkzeuge zur Listenmanipulation. Mit itertools.groupby:
L = [1,1,1,1,1,1,2,3,4,4,5,1,2] from itertools import groupby [key for key, _group in groupby(L)]
Dies ergibt die gewünschte Ausgabe: [1, 2, 3, 4, 5, 1, 2].
Für den zweiten Teil der Aufgabe:
[k for k, g in groupby(L) if len(list(g)) < 2]
Dabei wird Groupby verwendet, um aufeinanderfolgende Duplikate zu gruppieren und Gruppen mit mehr als einem Element herauszufiltern, wodurch Duplikate effektiv entfernt werden Elemente.
Falls gewünscht, können Sie die Erstellung einer temporären Liste vermeiden, indem Sie einen Generatorausdruck verwenden:
[k for k, g in groupby(L) if sum(1 for i in g) < 2]
Das obige ist der detaillierte Inhalt vonWie kann ich aufeinanderfolgende doppelte Elemente effizient aus einer Python-Liste entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!