Heim > Backend-Entwicklung > Python-Tutorial > Wie identifiziere ich aufeinanderfolgende Nummerngruppen in Python-Listen?

Wie identifiziere ich aufeinanderfolgende Nummerngruppen in Python-Listen?

Patricia Arquette
Freigeben: 2024-12-20 15:11:10
Original
679 Leute haben es durchsucht

How to Identify Consecutive Number Groups in Python Lists?

Identifizieren aufeinanderfolgender Nummerngruppen

In Python kann die Identifizierung aufeinanderfolgender Nummerngruppen innerhalb einer Liste mithilfe des integrierten itertools.groupby( ) Funktion. So funktioniert es:

itertools.groupby()-Funktion

Die groupby()-Funktion gruppiert Elemente eines Iterables basierend auf einer Schlüsselfunktion. In diesem Fall definieren wir eine Schlüsselfunktion, die die Differenz zwischen dem Index eines Elements und seinem Wert berechnet. Aufeinanderfolgende Zahlen haben denselben Schlüssel, was zu ihrer Gruppierung führt.

Code-Implementierung:

Beachten Sie die Beispielliste [2, 3, 4, 5, 12, 13 , 14, 15, 16, 17, 20]. Der folgende Code verwendet groupby(), um aufeinanderfolgende Zahlengruppen zu identifizieren:

from itertools import groupby
from operator import itemgetter

data = [2, 3, 4, 5, 12, 13, 14, 15, 16, 17, 20]
ranges = []

for k, g in groupby(enumerate(data), lambda (i, x): i - x):
    group = map(itemgetter(1), g)
    if len(group) > 1:
        ranges.append(tuple(group[0], group[-1]))
    else:
        ranges.append(group[0])
Nach dem Login kopieren

Die Tastenfunktion verstehen:

Die Lambda-Funktion (Lambda (i, x): i - x) berechnet die Differenz zwischen dem Index (i) und dem Wert (x) eines Elements. Dieser Unterschied ermöglicht es uns, aufeinanderfolgende Zahlen zu gruppieren. Für die Zahl 2 wäre die Differenz beispielsweise 0 und für die Zahl 12 wäre die Differenz 10.

Verarbeitung gruppierter Elemente:

Für jedes Schlüssel (Differenz), groupby() erzeugt ein Generatorobjekt (g), das die entsprechenden gruppierten Elemente enthält. Wir konvertieren diesen Generator mithilfe von map() und itemgetter() in eine Liste, um nur die Elementwerte zu extrahieren.

Ergebnisse filtern und anhängen:

Wir überprüfen die Länge von die gruppierten Elemente, um festzustellen, ob sie größer als 1 sind, und geben fortlaufende Zahlen an. Wenn ja, hängen wir ein Tupel des ersten und letzten Elements in der Gruppe an die Bereichsliste an. Bei einzelnen Nummern hängen wir die Nummer selbst an.

Ausgabe:

Die Bereichsliste enthält die folgenden Gruppen fortlaufender Nummern:

[(2, 5), (12, 17), 20]
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie identifiziere ich aufeinanderfolgende Nummerngruppen in Python-Listen?. 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