Seite 1 von 1
Liste aus 1 und 0 auswerten
Verfasst: Mittwoch 3. Juni 2020, 00:39
von MCK
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
Re: Liste aus 1 und 0 auswerten
Verfasst: Mittwoch 3. Juni 2020, 07:07
von EyDu
Hallo!
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]
Re: Liste aus 1 und 0 auswerten
Verfasst: Mittwoch 3. Juni 2020, 07:23
von Sirius3
@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 ...
Re: Liste aus 1 und 0 auswerten
Verfasst: Mittwoch 3. Juni 2020, 08:28
von __blackjack__
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)]
Re: Liste aus 1 und 0 auswerten
Verfasst: Mittwoch 3. Juni 2020, 08:57
von MCK
Hallo,
vielen Dank für die Hilfe, jetzt habe ich es hinbekommen.