Heim >Backend-Entwicklung >Python-Tutorial >Wie identifiziere ich aufeinanderfolgende Nummerngruppen in einer Python-Liste?
Identifizieren aufeinanderfolgender Zahlengruppen in einer Liste
In Python kann das Identifizieren von Gruppen aufeinanderfolgender Zahlen in einer Liste durch verschiedene Methoden erreicht werden. Hier ist eine Diskussion der verfügbaren Optionen:
1. GroupBy-Rezept aus Python-Dokumenten verwenden:
Python bietet ein elegantes Rezept für diese Aufgabe. GroupBy durchläuft aufgezählte Listenelemente und gruppiert aufeinanderfolgende Nummern:
from operator import itemgetter from itertools import groupby data = [2, 3, 4, 5, 12, 13, 14, 15, 16, 17] for k, g in groupby(enumerate(data), lambda (i,x):i-x): print(map(itemgetter(1), g))
Dadurch werden Gruppen aufeinanderfolgender Nummern ausgegeben:
[2, 3, 4, 5] [12, 13, 14, 15, 16, 17]
2. Ändern der GroupBy-Ausgabe:
Um das angeforderte Tupelformat zu erhalten, können Sie die Ausgabe wie folgt ändern:
ranges = [] for k, g in groupby(enumerate(data), lambda (i,x):i-x): group = map(itemgetter(1), g) ranges.append((group[0], group[-1]))
Dies wird Folgendes ausgeben:
[(2, 5), (12, 17)]
3. Benutzerdefinierte Implementierung:
Sie können auch Ihre eigene benutzerdefinierte Lösung implementieren:
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])
Umgang mit einzelnen Nummern:
Um einzelne Nummern zurückzugeben Als einzelne Elemente ändern Sie einfach den benutzerdefinierten Implementierungscode wie folgt:
... if len(group) > 1: ranges.append(xrange(group[0], group[-1]+1)) else: ranges.append(group[0])
Das obige ist der detaillierte Inhalt vonWie identifiziere ich aufeinanderfolgende Nummerngruppen in einer Python-Liste?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!