это вариант.
сначала я собираю индекс i
вхождений всех char
актеров; Затем я вычисляю mean
различий:
from collections import defaultdict
from itertools import islice
from statistics import mean
strg = "F-F-F+F+F+F-F-F-F+F+F+F-F+F+F-F+F-F-F-F"
dct = defaultdict(list)
for i, char in enumerate(strg):
dct[char].append(i)
for char, occurrences in dct.items():
avg = mean(b - a for a, b in zip(occurrences, islice(occurrences, 1, None))) - 1
print(f"Average chars between {char}s: {avg}")
это печатает:
Average chars between Fs: 1
Average chars between -s: 3
Average chars between +s: 2.25
после первого цикла for будут такие записи в dct
:
'-': [1, 3, 11, 13, 15, 23, 29, 33, 35, 37]
и, как уже упоминалось, второй цикл for вычисляет среднее значение различий.