Oto przykładowy formularz, postaram się wyjaśnić to później w słowach. Mam listę z rozbijając ciąg ...Jak przetworzyć ciąg na warstwę podlisty
powiedzenia
[a, a, a, b, a, a, b, a, c, a, b, a, a, c, a, c, a]
gdzie b to kryteria 1 i C jest kryterium 2
chcę podzielić go na liście, jak poniżej:
[a, a, a, [b, a, a, [b, a, c], a, [b, a, a, c], a, c], a]
Więc chcę przetworzyć ciąg taki, że gdy idę przez niego, jeśli element pasuje do kryteriów 1, otworzyć nową listę, czy pozycja odpowiada kryteriom 2, zamknij lista a nd zwraca jeden poziom wyżej.
Próbowałem zrobić coś takiego, ale to nie działa bardzo dobrze.
def sublist(self, l):
for line in list:
if not b:
self.data.append(line)
else:
sublist(l[line:]) #<----- not sure how to recurse it.
Widziałem łamanie listy do listy równej wielkości zanim na stackoverflow, ale nie jedno włamanie do podmenu za pomocą zestawu kryteriów.
Jestem dość nowy dla Pythona, więc nie jestem zbyt zaznajomiony z strukturami danych i narzędziami iteratora.
Nice. Generatory zdecydowanie upraszczają strukturę rekursywną. – Marcin
(+1) Ładne rozwiązanie! – NPE
Należy zauważyć, że obsługuje to "niedomiar", kończąc dane wyjściowe. To może nie być to, co jest pożądane. – Marcin