Wie man alle Listen in eine Liste von Listen die gleiche Länge, indem Sie Ihnen
Ich habe eine verschachtelte Liste, die enthält eine Liste mit Zeichenfolgen gefüllt. Was ich versuche zu machen, ist jeder Liste in diesem nest die gleiche Länge wie die längste Liste verfügbar, in diesem nest. Das klingt einfach, aber meine versuche sind gescheitert (ich bin völlig neu in die Programmierung) und ich kann nicht finden, eine Frage geantwortet, die relative genug, um mein problem zu lösen.
Erste, den ich bestimmen, wie lange die längste Liste ist:
maxSS7 = max(len(i) for i in ssValues7))
Dann verwende ich eine for-Schleife erweitern, jede Liste durch eine bestimmte Menge von 'null', wenn es nicht die gleiche Länge wie die längste Liste:
for row in ssValues7:
if row < len(maxSS7):
row.extend(['null' * (len(maxSS7) - len(row))])
Ich bin Verlängerung der Reihe von "null" * die Differenz zwischen der längsten Liste und aktuelle Liste. Treten keine Fehler auf, aber leider scheint es nichts zu tun, um meine verschachtelte Liste.
Könnte bitte jemand mich aufklären über meine Fehler? Jegliche Hilfe würde sehr geschätzt werden.
- Ist
maxSS7
die längste Liste, oder die Länge der längsten Liste? Sie nicht definieren, es in deinem Beispiel-code, aber Sie müssen definierenmaxList
. - Dies war nur ein dummer Fehler meinerseits, es sollte maxList.
- Ich habe aktualisiert Ihre Beispiel Namen von Variablen, konsequent zu sein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist das problem mit der Zeile:
Sind Sie Vergleich der Liste
row
mit der integerlen(maxSS7)
. Es werden anhandFalse
jeder Zeit. Ändern Sie es zu:Martijn Peters wies ein weiteres problem mit dem code in seine Antwort.
Den Ausdruck
'null' * (len(maxSS7) - len(row))
erstellt eine potenziell sehr lange Zeichenfolge.Verwenden
statt. Der generator-Ausdruck können Sie vermeiden, die Schaffung einer extra Liste Objekt nur zu verlängern
row
.Aber die
.extend
Anruf selbst wird niemals erreicht, da Sieif
- Anweisung testet die falsche Sache; es zu ändern:maxSS7
ist schon eine Nummer (die Länge der längsten Liste); zu Fragen, dass die Zahl für die Länge ist nicht, was Sie gesucht haben.