Поскольку вы будете выводить все смежные подсписки, размер вывода будет O (N ^ 2), где N - длина списка, а временная сложность будет не менее квадратичной c независимо от того, что (вы может достичь линейной пространственной сложности с помощью генератора). Вот один из способов вычислить все смежные подстроки с пониманием списка:
s = "24256"
n = len(s)
res = [s[i:j] for i in range(n) for j in range(i+1,n+1)]
print(res)
# ['2', '24', '242', '2425', '24256', '4', '42', '425', '4256', '2', '25', '256', '5', '56', '6']
В стороне, обычно нежелательно создавать списки с str += ...
, поскольку новая копия str
создается на каждая итерация. Один из обходных путей - создать список компонентов и вызвать .join
после того, как все компоненты будут найдены.