Не знаю, почему мой вопрос получил отрицательное голосование, но я все еще новичок здесь, поэтому извиняюсь, если это был плохой вопрос. Я немного поработал над исходной проблемой, но до сих пор не понимаю причину внешнего цикла, но мне удалось имитировать исходный эталонный скрипт (для массивов вместо строк). Я хотел опубликовать его на тот случай, если кто-то еще найдет для него применение. Я уверен, что это не самый эффективный способ, но, похоже, он работает. Если кто-то видит в нем дыры, обязательно сообщите:
def countSubs(total, sub):
totalCount = 0
for i in range(len(total) - len(sub) + 1):
testCount = 0
for j in range(len(sub)):
if sub[j] == total[i + j]:
testCount += 1
if testCount == len(sub):
totalCount += 1
return totalCount
minLength = 3
minCount = 2
test = [1,2,1,3,2,-1,2,-1,2,4,2,4,2,5,2,5,2,5,6,7,-1,7,-1,8,7,6,-1,9,-1,9,8,7,10]
rectDict = {}
for sublen in range(minLength, int(len(test)/minCount)):
for i in range(0, len(test) - sublen):
sub = test[i:i + sublen]
cnt = countSubs(test, sub)
#not necessary to concatenate with commas, but for visual legibility
subText = ''.join(str(e) + ',' for e in sub)
if cnt >= minCount and subText not in recDict:
recDict[subText[:-1]] = cnt
print(rectDict)