Próbuję podzielić listę ciągów na listę krotek o nierównej długości zawierającą te ciągi, przy czym każda krotka zawiera ciągi początkowo oddzielone pustymi ciągami. Zasadniczo potrzebowałbym sparametryzowanego podziału, który mógłbym zastosować do list. Jeśli moja wstępna lista wygląda następująco:Podział listy na niejednolite krotki
init = ['a', 'b', '', 'c', 'd e', 'fgh', '', 'ij', '', '', 'k', 'l', '']
Ostatnim elementem tej listy jest zawsze zamykanie ''
. Mogą być kolejno następujące ''
s, które będą uważane za single. Rezultatem jest mi potrzebne:
end = [('a', 'b'), ('c', 'd e', 'fgh'), ('ij',), ('k', 'l')]
już mam brzydki kodu, który wykonuje pracę i dostaje się poza zasięgiem, gdy lista jest całkowicie wyszły:
end = []
while init[-1] == u'':
init.pop()
l = []
while init[-1] != u'':
l.append(init.pop())
end.append(tuple(l))
Chciałbym użyć listowych , ale bezskutecznie próbowałem rozpakowywać listy argumentów, odwracając listy z własnym odwołaniem, używając kolejki deque
i różnych zapachów kodu, teraz wątpię, czy ma sens szukanie rozwiązania (zagnieżdżonego) ze zrozumieniem?
Czy to takie ładne zastąpić funkcję lambda z 'bool' rzucać ciąg i uzyskać podobny wynik? – Felix