Heim > Backend-Entwicklung > Python-Tutorial > Wie identifiziere und gruppiere ich aufeinanderfolgende Zahlen in einer Python-Liste?

Wie identifiziere und gruppiere ich aufeinanderfolgende Zahlen in einer Python-Liste?

Susan Sarandon
Freigeben: 2024-12-08 17:47:11
Original
645 Leute haben es durchsucht

How to Identify and Group Consecutive Numbers in a Python List?

Aufeinanderfolgende Zahlen in einer Liste identifizieren

Die Aufgabe besteht darin, eine Liste in Gruppen aufeinanderfolgender Zahlen zu unterteilen. Jede Gruppe sollte nur fortlaufende Nummern enthalten. Die Ausgabe muss einzelne Zahlen beibehalten und darf sie nicht zu Bereichen kombinieren.

Lösung:

In Python können Sie die integrierte Groupby-Funktion zusammen mit einem benutzerdefinierten Schlüssel verwenden zu erreichen dies:

from itertools import groupby
from operator import itemgetter

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

Erklärung:

  1. enumerate(data) erstellt eine Liste von Paaren, wobei jedes Paar aus einem Index besteht (beginnend bei 0) und das entsprechende Element in den Daten.
  2. Die Lambda-Funktion (Lambda (Index, Element): Index - Element) berechnet die Differenz zwischen dem Index und der Elementwert. Dieser Unterschied dient als Schlüssel für die Gruppierung.
  3. groupby unterteilt die Liste der Paare basierend auf dem Schlüssel in aufeinanderfolgende Gruppen. Jede Gruppe enthält Elemente mit demselben Unterschied.
  4. Um die Bereiche aufeinanderfolgender Zahlen abzurufen, ordnen wir die Paare in jeder Gruppe ihrem zweiten Element (der tatsächlichen Zahl) zu, indem wir „map(itemgetter(1), group)“ verwenden.
  5. Wir prüfen, ob jede Gruppe mehr als eine Zahl enthält. Wenn ja, erstellen wir einen Bereich für diese Zahlen und hängen ihn an Bereiche an. Andernfalls fügen wir die Zahl einfach zu Bereichen hinzu.

Beispielausgabe:

data = [2, 3, 4, 5, 12, 13, 14, 15, 16, 17, 20]
ranges = [xrange(2, 5), xrange(12, 17), 20]
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie identifiziere und gruppiere ich aufeinanderfolgende Zahlen in einer Python-Liste?. 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