У меня есть следующий список:
l = [False, True, True, False, True, False, False, True, False, False, False, True]
Я бы хотел собрать длину каждой Истинной и Ложной последовательности в сегменты. Мне нужно сосчитать все последовательности, которые имеют значение True, с последовательной длиной = 1, затем последовательной длиной = 2, последовательной длиной = 3 ...
Вывод для этого списка может быть следующим:
Ложь: {1:2, 2:1, 3:1}
Истины: {1:3, 2:1}
Может кто-нибудь немного помочь?
Редактировать: Решение
from collections import defaultdict
trues = defaultdict(int)
l = [1 if i == True else -1 for i in l]
seq = []
for i in series:
if i > 0:
seq.append(i)
else:
if len(seq) != 0:
trues[len(seq)] += 1
seq = []
if len(seq) != 0:
trues[len(seq)] += 1
print(trues)
>defaultdict(<class 'int'>, {2: 1, 1: 3})