rekursion, alle zwischenergebnisse speichern
Verfasst: Sonntag 23. Oktober 2022, 07:12
Hallo zusammen,
ich habe folgende Problem:
Ich möchte beim rekursiven Aufruf eines Skripts alle Zwischenergebnisse speichern.
Im konkreten Fall werden aus einem Wort alle substrings gebildet, die um 1 kürzer sind als dieses Wort.
Diese substrings werden in der Liste "interim" gespeichert.
Jedes Element von interim erzeugt nun wiederum eine neues interim, usw.
Das klappt soweit auch, ich sehe das, wenn ich interim ausdrucke.
Aber am Ende möchte ich eine liste mit sämtlichen Substrings haben und das klappt nicht.
Nur die oberste Liste interim wird am Ende gespeichert.
Wie könnte ich das ändern?
Hier mein Code:
ich habe folgende Problem:
Ich möchte beim rekursiven Aufruf eines Skripts alle Zwischenergebnisse speichern.
Im konkreten Fall werden aus einem Wort alle substrings gebildet, die um 1 kürzer sind als dieses Wort.
Diese substrings werden in der Liste "interim" gespeichert.
Jedes Element von interim erzeugt nun wiederum eine neues interim, usw.
Das klappt soweit auch, ich sehe das, wenn ich interim ausdrucke.
Aber am Ende möchte ich eine liste mit sämtlichen Substrings haben und das klappt nicht.
Nur die oberste Liste interim wird am Ende gespeichert.
Wie könnte ich das ändern?
Hier mein Code:
Code: Alles auswählen
#!/usr/bin/env python3
from itertools import combinations
def substrings(nstring,l):
allsubs = [ ]
if l >1:
alist = [ ]
interim = [ ]
for s in nstring:
alist.append(s)
combis = list(combinations(alist,l))
for c in combis:
sub =""
for i in c:
sub += i
interim.append(sub)
print(interim)
allsubs.append(interim)
for i in interim:
nstring= i
substrings(nstring,l-1)
return allsubs
print(substrings("Lösung",5))