Ich habe eine Liste von Listen der Form:Wie man vier Einrückungslevels in Python umgestaltet?
items = [["Wello \nWorld", "roboto.ttf", "rgb(0,0,0)"], ["StackOverflow is awesome", "roboto.ttf", "rgb(255,255,255)"]]
Was ich tun möchte, ist über jeden list
gehen ... erklären die Variablen text
, font
, color
. Danach teilen Sie den Text in Zeilen, wenn es \n
Zeichen auf ihm hat und trennen Sie dann die Zeilen in Wörter, um etwas mit ihnen zu tun.
Hier ist der Code, mit dem ich kam, um das zu erreichen.
def wrap(self, size):
for section in sections:
for text, font, color in section:
for line in text.splitlines():
for word in line:
pass
Ich weiß, dass diese Funktion falsch ist. Wenn es nicht falsch ist, dann ist die Welt falsch. Diese Ebene der Einrückung scheint hässlich und ich hoffe wirklich, dass Sie mir helfen können, es anders auszudrücken. Oder vielleicht sind die Daten falsche Struktur?
Eine weitere Sache:
Ich las von The Zen of Python, die:
Wohnung ist besser als verschachtelt.
Gilt das für meine Frage? Ich wette, es tut, aber ich habe ein wenig über Google Groups gelesen und Leute neigen dazu, beziehen sich auf Python-Pakete und Vererbungshierarchien bei der Bezugnahme auf Flat ist besser als verschachtelt.
Normalerweise, wenn ich tief verschachtelte Blöcke von Code sehe, ist das erste, was zu tun ist zu sehen, ob einer dieser Blöcke zu einer separaten Funktion als logische Einheit verschoben werden kann. Ihre 'wrap()' Funktion scheint viel zu tun. Der Hauptteil der 'sections'-Schleife könnte wahrscheinlich in eine' process_section() '-Funktion verschoben werden. Ich würde darüber nachdenken, die Zeilenverarbeitung auf ihre eigene separate Funktion zu verschieben. –
Die "Elemente", die Sie anzeigen, scheinen in Ihrem Code dem Abschnitt "section" zu entsprechen, sodass Ihren Beispieldaten eine Verschachtelungsebene fehlt, die von Ihrem Code widergespiegelt wird. Ihre Zeichenfolgen sind auch nur codierte Listen von Zeichenfolgen, die für die andere zusätzliche Ebene verantwortlich sind. Ihr Code wird so verschachtelt wie die Daten, die Sie analysieren möchten. – chepner