Ich laufe häufig auf ein Problem, wo ich versuche, eine Liste von Listen einer bestimmten Länge aus einer Zeichenfolge zu erstellen.Nesting List Comprehension
Dies ist ein Beispiel, wo ich einen String habe, möchte aber eine Liste von Listen der Länge 3 machen:
x = '123456789'
target_length = 3
new = [i for i in x]
final = [new[i:i+target_length] for i in range(0, len(x), target_length)]
print(final)
Ausgang:
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
Also, das funktioniert, fühlt sich aber so klobig.
Gibt es eine bessere Möglichkeit, diese Argumente in einer Zeile zu kombinieren, oder glauben Sie, dass der Code dadurch unlesbar wird?
Dies setzt voraus, dass die Länge der Liste ist 'target_length ** 2', was es in diesem Beispiel ist, aber nur zufällig. –
Wahr. Die Antwort von AK47 ist die bessere – triphook
Sie können es reparieren oder zumindest verbessern, indem Sie 'range (len (x) // target_length)' in der äußeren Schleife verwenden, dann funktioniert es mindestens für Längen von 'x', die ein Vielfaches von sind die Ziellänge. –