Ich versuche, eine Liste von Strings in eine Liste von Tupeln ungleicher Länge aufzuteilen, die diese Strings enthalten, wobei jedes Tupel Strings enthält, die anfänglich durch leere Strings getrennt sind. Im Grunde würde ich die parametrisierte Aufteilung benötigen, die ich auf Listen anwenden könnte. Wenn meine erste Liste wie folgt aussieht:Aufteilen einer Liste in ungleichmäßige Tupel
init = ['a', 'b', '', 'c', 'd e', 'fgh', '', 'ij', '', '', 'k', 'l', '']
Das letzte Element dieser Liste ist immer eine Schließung ''
. Es kann aufeinanderfolgende ''
s geben, die als Singles gelten. Das Ergebnis was ich brauche ist:
end = [('a', 'b'), ('c', 'd e', 'fgh'), ('ij',), ('k', 'l')]
ich schon hässlich Code haben, der die Arbeit erledigt und wird außerhalb der Reichweite, wenn die Liste vollständig aufgetaucht ist out:
end = []
while init[-1] == u'':
init.pop()
l = []
while init[-1] != u'':
l.append(init.pop())
end.append(tuple(l))
Ich möchte Comprehensions verwenden , aber nachdem ich erfolglos versucht habe, die Argumentlisten zu entpacken, selbstreferenzierte Listen umzukehren, deque
Warteschlangen und verschiedene Code-Gerüche zu verwenden, zweifle ich jetzt daran, ob es sinnvoll ist, nach einer (verschachtelten) Verständnislösung zu suchen.
Ist es schön, die Lambda-Funktion mit 'bool' ersetzen die Zeichenfolge zu werfen und ein ähnliches Ergebnis erhalten? – Felix