Aufeinanderfolgende Nummerngruppen in einer Liste identifizieren
Wenn man mit der Aufgabe konfrontiert wird, Gruppen aufeinanderfolgender Nummern in einer Liste zu identifizieren, gibt es mehrere Ansätze zu berücksichtigen.
Integrierte Python-Funktionalität
Python stellt für diese Aufgabe ein leistungsstarkes Werkzeug bereit: die Funktion groupby(). Mithilfe dieser Funktion können wir Elemente anhand der Differenz zwischen ihrem Index und ihrem Wert kategorisieren. Beispielsweise würde die Funktion „groupby()“ in der Liste [2, 3, 4, 5, 12, 13, 14, 15, 16, 17] die folgenden Gruppen ausgeben:
[(2, [2, 3, 4, 5]), (12, [12, 13, 14, 15, 16, 17])]
Hier: Jede Gruppe besteht aus Elementen, deren Index um den gleichen Betrag von ihrem Wert abweicht und fortlaufende Nummern angibt.
Benutzerdefiniert Funktion
Ein alternativer Ansatz besteht darin, eine benutzerdefinierte Funktion zu erstellen. Eine Implementierung ist unten angegeben:
ranges = [] for key, group in groupby(enumerate(data), lambda (index, item): index - item): group = map(itemgetter(1), group) if len(group) > 1: ranges.append(xrange(group[0], group[-1])) else: ranges.append(group[0])
Diese Funktion generiert eine Liste von Tupeln, wobei jedes Tupel eine fortlaufende Zahlengruppe darstellt. Für die Eingabe [2, 3, 4, 5, 12, 13, 14, 15, 16, 17] wäre die Ausgabe:
[(2, 5), (12, 17), 20]
Beachten Sie, dass einzelne Zahlen als einzelne Elemente zurückgegeben werden und nicht Bereiche.
Das obige ist der detaillierte Inhalt vonWie kann ich aufeinanderfolgende Nummerngruppen in einer Python-Liste effizient identifizieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!