Das Identifizieren von Gruppen aufeinanderfolgender Nummern in einer Liste ist eine häufige Aufgabe, die in verschiedenen Programmierszenarien auftritt.
Glücklicherweise bieten die integrierten Funktionen und Module von Python hierfür elegante Lösungen Problem. Ein Ansatz nutzt die Funktion „groupby()“ und den Lambda-Ausdruck:
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))
Dieses Snippet gruppiert aufeinanderfolgende Zahlen basierend auf der Differenz zwischen ihrem Index und ihrem Wert und stellt so sicher, dass Elemente innerhalb jeder Gruppe aufeinanderfolgend sind.
Wenn die gewünschte Ausgabe eine Liste von Tupeln ist, die den Bereich aufeinanderfolgender Zahlen darstellen, kann die folgende Änderung vorgenommen werden:
ranges = [] for k, g in groupby(enumerate(data), lambda (i, x): i - x): group = map(itemgetter(1), g) ranges.append((group[0], group[-1]))
Alternativ kann eine benutzerdefinierte Lösung mithilfe einer Schleife und eines Listenverständnisses implementiert werden:
ranges = [] for i in range(len(data)): if i == len(data) - 1 or data[i] + 1 != data[i + 1]: ranges.append((data[i], data[i])) else: start = i while i + 1 < len(data) and data[i] + 1 == data[i + 1]: i += 1 ranges.append((data[start], data[i]))
Dieser Ansatz iteriert durch die Liste und identifiziert die Start- und Endindizes jeder aufeinanderfolgenden Gruppe und Anhängen an die Bereichsliste.
Das obige ist der detaillierte Inhalt vonWie kann ich aufeinanderfolgende Nummerngruppen in einer Python-Liste identifizieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!