Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich aufeinanderfolgende doppelte Elemente effizient aus einer Python-Liste entfernen?

Wie kann ich aufeinanderfolgende doppelte Elemente effizient aus einer Python-Liste entfernen?

Patricia Arquette
Freigeben: 2024-12-01 09:37:09
Original
505 Leute haben es durchsucht

How Can I Efficiently Remove Consecutive Duplicate Elements from a Python List?

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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)]
Nach dem Login kopieren

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]
Nach dem Login kopieren

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]
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage