[PYTHON] Fügen Sie aufeinanderfolgende Werte in der Liste zusammen

Notieren Sie sich die prägnante Beschreibungsmethode zum Zusammenfassen der monoton ansteigenden Zahlenfolge für jeden aufeinanderfolgenden Wert.

import itertools

sample = [1,2,3,5,6,7,9,10]

[list(g) for _, g in itertools.groupby(
    sample, key=lambda n, c=itertools.count(): n - next(c))]

# => [[1, 2, 3], [5, 6, 7], [9, 10]]

itertools.groupby übergibt jedes Element der Iterable des ersten Arguments an das zweite Argument und gibt es zurück. Gibt einen Iterator zurück, der aufeinanderfolgende Elemente mit demselben Wert zusammen mit den an die zweite Argumentfunktion übergebenen Elementen zurückgibt. Im obigen Beispiel ist das erste Argument "sample" und das zweite Argument "key" ein Lambda-Ausdruck. Der Lambda-Ausdruck hat zwei Argumente, "n" und optional "c", aber "c" hat den Standardwert "itertools.count ()", der in "groupby" fortlaufend ist. Beim Aufruf bei der Bestimmung der Identität der zu verwendenden Elemente wird jedes Element von "sample" an "n" übergeben. itertools.count () generiert einen Iterator, der eine Zahl zurückgibt, die von 0 um 1 erhöht wird. Der Standardwert von "c" wird nur einmal ausgeführt, wenn der Lambda-Ausdruck definiert ist, und ein Iterator, der die Zahl "+ 1" in der Reihenfolge von 0 zurückgibt, wird zugewiesen. Für "n --next (c)" erhöht sich "next (c)" mit jedem Aufruf um "1", so dass "n" um "1" zunimmt und der gleiche Wert aus diesem Lambda-Ausdruck erhalten wird. Es wird zurückgegeben, aber ein anderer Wert wird zurückgegeben, wenn n mehr als 1 erhöht. Der Iterator, der aufeinanderfolgende Elemente mit demselben Rückgabewert dieses Lambda-Ausdrucks zurückgibt, ist "g", und "list (g)" generiert eine Liste aufeinanderfolgender Elemente in einer verschachtelten Liste nach Listeneinschlussnotation.

Recommended Posts

Fügen Sie aufeinanderfolgende Werte in der Liste zusammen
In der Liste verfügbare Methoden
[Python] So geben Sie Listenwerte der Reihe nach aus
Kombinieren Sie Listen zu einem DataFrame mit Pandas
Legen Sie das Modul in die Pepper-App
[Python] Ermittelt den Rang der Werte in der Liste in aufsteigender / absteigender Reihenfolge
Nehmen Sie die logische Summe von List in Python (Zip-Funktion)
Ändern Sie die Liste in der for-Anweisung
Umgang mit aufeinanderfolgenden Werten in MySQL
Ruft die EDINET-Codeliste in Python ab
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Kopieren Sie die Liste in Python
Holen Sie sich nur Unterklassenelemente in eine Liste
Im Druck sehen die Nicht-ASCII-Zeichen in der Liste großartig aus
Suchen Sie nach dem Wert der Instanz in der Liste
[Python] So entfernen Sie doppelte Werte aus der Liste
Extrahieren und listen Sie die Namen von Personen und Orten im Text auf
Ergänzen Sie die Bibliothek in Anakonda mit jedi-vim
[Python] Ruft die Liste der im Modul definierten Klassen ab
Lesen Sie die Linkliste im CSV-Format mit dem Graph-Tool
[Python] Gibt alle Kombinationen von Elementen in der Liste aus
Gruppieren Sie nach aufeinanderfolgenden Elementen einer Liste in Python
Sortierte Liste in Python
Legen Sie matplotlib in Centos7.
Setze scipy in ec2
FizzBuzz in Listeneinschlussnotation
Setze Jedi in Emacs 24
Filterliste in Python
Die findähnliche Sache der Liste in Python
Werte in Python austauschen
Pip in den Mixer geben
In Python werden die Elemente in der Liste sortiert und als Elemente und Vielfache ausgegeben.
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
So erhalten Sie alle Schlüssel und Werte im Wörterbuch
Ermitteln Sie die Anzahl der Vorkommen für jedes Element in der Liste
Erstellen Sie eine neue Liste, indem Sie doppelte Elemente in der Liste kombinieren
Ich möchte den Wörterbuchtyp in der Liste eindeutig machen
Finden Sie den Durchschnitt / die Standardabweichung der Helligkeitswerte im Bild