ich das vor etwa einer Minute gebucht ähnlich wie die andere Antwort hat, aber ich eine Klasse nicht Zustand nachverfolgt verwenden .
import itertools
def alternating_size_chunks(iterable, steps):
n = 0
step = itertools.cycle(steps)
while n < len(iterable):
next_step = next(step)
yield iterable[n:n + next_step]
n += next_step
Testing:
>>> test_string = ''.join(random.choice('01') for _ in range(50))
>>> print(list(alternating_size_chunks(test_string, (1, 8, 2))))
['1', '01111010', '01', '1', '00111011', '11', '0', '11010100', '01', '0', '10011101', '00', '0', '11111']
Beachten Sie, dass diese beiden Methoden (meine und die Antwort von Mark) wird eine beliebige Menge von Längen nehmen (ob es sich um 1, 8, 2 oder irgendetwas anderes), und arbeiten auch wenn sich die Länge des Bitstroms nicht genau zu einem Vielfachen der Summe der Längen addiert. (Sie können sehen, in meinem Beispiel lief es aus Bits und der letzte Teil hat nur fünf.) Dies kann oder nicht in Ihrem Fall wünschenswert sein, so möchten Sie vielleicht überprüfen, ob Sie genug Daten haben, um zu konvertieren, sobald Sie fertig sind TU das.
Referenz: itertools.cycle
Was ist (1,8,2) Format? Bitte geben Sie eine kurze Beschreibung wenn möglich oder einen Link ... Auch Sie werden voraussichtlich zeigen, was Sie versucht haben. – Julien
Ich meine, die (1,8,2) Format so etwas wie diese: '[1, 01001010, 11, 1, 010101, 01, 1 .. (usw.)]' ^ ^^^^^^^ ^^ ^^ 1 --- 8 ------- 2- –
Behaupten Sie, dass 1 = 1, 8 = 01.001.010 und 2 = 11? Wenn ja, können Sie dann erklären, wie Sie mit diesem Mapping umgehen? –