Hallo Zusammen,
ich habe ein Problem, bei dem ich nicht weiter komme, und zwar:
Ich habe eine beliebig lange Liste aus 1 und 0. Z.Bsp.:
a = [0, 0, 0, 1, 1, 0, 0]
Die Liste soll in eine neue Liste überführt werden in der die Anzahl der aufeinanderfolgenden 0 bzw. 1 gelistet sind.
Für die Liste oben also:
b = [3, 2, 2]
Es wäre toll, wenn mir hier jemand weiterhelfen könnte!
Viele Grüße
MCK
Liste aus 1 und 0 auswerten
Hallo!
Schau dir mal die groupby-Funktion im itertools-Modul an, damit kannst du das ganz leicht lösen:
Schau dir mal die groupby-Funktion im itertools-Modul an, damit kannst du das ganz leicht lösen:
Code: Alles auswählen
>>> import itertools
>>> xs = [0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1]
>>> for i, ys in itertools.groupby(xs):
... print(i, list(ys))
...
0 [0, 0]
1 [1, 1, 1, 1]
0 [0]
1 [1]
0 [0, 0, 0, 0]
1 [1]
Das Leben ist wie ein Tennisball.
@MCK: und welche Gedanken hast Du Dir schon darüber gemacht, wie man das Problem angehen könnte? Du kennst sicher schon Schleifen und if-Abfragen.
Versuche das Problem so umzuformulieren, dass es auf eine Schleifenverarbeitung passt: für jedes Element aus der Liste prüfe, wenn 0 dann ... wenn 1 dann ...
Versuche das Problem so umzuformulieren, dass es auf eine Schleifenverarbeitung passt: für jedes Element aus der Liste prüfe, wenn 0 dann ... wenn 1 dann ...
- __blackjack__
- User
- Beiträge: 13119
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Das externe `more_itertools` hat was nützliches was einen auch recht nah ans gewünschte Ergebnis führt:
Code: Alles auswählen
In [95]: xs = [0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1]
In [96]: list(more_itertools.run_length.encode(xs))
Out[96]: [(0, 2), (1, 4), (0, 1), (1, 1), (0, 4), (1, 1)]
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman