Erstellen eines dynamischen Arrays in Python

Ich habe ein dynamisches Array, in dem ich die Userstring aktualisieren möchte, zB für eine 25 Zeichen einzelne Saite wie 'mannysattynastysillyfully'. Da wäre ein 5×5 Array.

manny satty nasty silly fully 

Ich habe mehrere Sachen ausprobiert und ging durch umfangreiche Suche mit wenig Information, die ich bekam von 1. Wie definiere ich zweidimensionale Array in Python 2. Wie man Eingaben in ein Array + PYTHON? 3. python – wie man eine Eingabezeichenfolge in ein Array aufteilt?

Ich bin immer noch nicht in der Lage zu begreifen, wie ich mich mit den Benutzerwerten in das dynamische Array befassen sollte

One Solution collect form web for “Erstellen eines dynamischen Arrays in Python”

Ich denke, das kann tun, was du bist nach:

 >>> def two_dim(inval, width=5): ... out = [] ... for i in range(0, len(inval) - 1, width): ... out.append(list(inval[i:i + width])) ... return out ... >>> print(two_dim('mannysattynastysillyfully')) [['m', 'a', 'n', 'n', 'y'], ['s', 'a', 't', 't', 'y'], ['n', 'a', 's', 't', 'y'], ['s', 'i', 'l', 'l', 'y'], ['f', 'u', 'l', 'l', 'y']] 

Und um es zu drucken, wie Sie in der Frage haben:

 >>> c = two_dim('mannysattynastysillyfully') >>> for sub in c: ... print " ".join(sub) ... manny satty nasty silly fully 

HINWEIS Dies führt nur zu kompletten Zeilen, so dass eine Breite verwendet wird, die kein Faktor der Länge des eingegebenen Strings ist, führt zu verlorenen Daten. Das ist leicht zu ändern, wenn gewünscht, aber ich werde das als eine Übung dem Leser überlassen.

Wenn du scheinst, immer ein Quadrat 2×2 zu schaffen, dann könntest du so etwas machen

 def is_square(l): return math.floor(math.sqrt(l))**2 == l def two_dim_square(inval): if not is_square(len(inval)): raise Exception("string length is not a perfect square") width = math.sqrt(len(inval)) # proceed like before with a derived width 

BEARBEITEN 2

 def two_dim(inval, width=5): out = [] for i in range(0, len(inval) - 1, width): out.append(list(inval[i:i + width])) return out def print_array(label, inval, joiner=' '): print label for sub in inval: print joiner.join(sub) print print_array("3 by X", two_dim('mannysattynastysillyfully', 3)) print_array("4 by X", two_dim('mannysattynastysillyfully', 4)) print_array("5 by X", two_dim('mannysattynastysillyfully', 5)) print_array("6 by X", two_dim('mannysattynastysillyfully', 6)) 

Gibt die Ausgabe

 3 by X man nys att yna sty sil lyf ull 4 by X mann ysat tyna stys illy full 5 by X manny satty nasty silly fully 6 by X mannys attyna stysil lyfull 

BEARBEITEN 3
Wenn Sie möchten, dass alle Daten immer vorhanden sind und einen Standardwert für leere Zellen verwenden, dann würde das aussehen

 def two_dim(inval, width=5, fill=' '): out = [] # This just right-pads the input string with the correct number of fill values so the N*M is complete. inval = inval + (fill * (width - (len(inval) % width))) for i in range(0, len(inval) - 1, width): out.append(list(inval[i:i + width])) return out 

Angerufen mit

 print_array("3 by X", two_dim('mannysattynastysillyfully', 3, '*')) 

AUSGABE

 3 by X man nys att yna sty sil lyf ull y * * 
  • Warum ist meine Python3-Skript-Balk bei Piping ihre Ausgabe an Kopf oder Schwanz (Sys-Modul)?
  • Subprocess.Popen: 'OSError: [Errno 13] Permission verweigert' nur auf Linux
  • Senden einer JSON-Zeichenfolge als Postanforderung
  • Wie man das Ausgabeformat steuert, wenn chinesische Zeichen und ascii gemischt werden?
  • Kann die Methode des Elternteils im Listenverständnis im Initialisierer des Kindes nicht aufrufen, aber explizite Schleife funktioniert
  • Python-Tastatur-Ereignisse ohne GUI (nicht blockierend)
  • Wie lassen Sie andere Python-Programm ohne Python installieren
  • Python-Wie finde ich größte / kleinste int / long / float / komplexe Zahlen mein System kann [duplizieren]
  • Python kann PyGObject nicht installieren
  • Wie zeigt man an, dass eine Funktion eine Funktion als Parameter erwartet oder eine Funktion über Funktionsanmerkungen zurückgibt?
  • Mainloop und Text mit Threads
  • Python ist die beste Programmiersprache der Welt.