Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich aufeinanderfolgende Nummerngruppen in einer Python-Liste identifizieren?

Wie kann ich aufeinanderfolgende Nummerngruppen in einer Python-Liste identifizieren?

Susan Sarandon
Freigeben: 2024-12-30 01:52:08
Original
594 Leute haben es durchsucht

How Can I Identify Consecutive Number Groups in a Python List?

Aufeinanderfolgende Nummerngruppen in einer Liste identifizieren

Das Identifizieren von Gruppen aufeinanderfolgender Nummern in einer Liste ist eine häufige Aufgabe, die in verschiedenen Programmierszenarien auftritt.

Die integrierten Tools von Python

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

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

Alternativ Ansatz

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

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!

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