Ich habe eine Funktion erstellt, um die Bewegung eines zweidimensionalen Arrays (Python) zu sehen.

Einführung

Ich denke, es gibt Zeiten, in denen Sie Änderungen in einem zweidimensionalen Array beobachten möchten, hauptsächlich bei Wettkampfprofis. DP oder DP.

Wenn es sich um ein eindimensionales Array handelt, ist es ziemlich schwierig zu erkennen, ob Sie das zweidimensionale Array nacheinander "drucken". Also habe ich eine Funktion vorbereitet, um die Änderung des zweidimensionalen Arrays zu beobachten.

Klicken Sie hier für das fertige Produkt ↓

from time import sleep
def print_2d_overwrite(list2d, val_width=5, sleep_sec=1.0, header=None, highlights=[]):
    res_str = f'{header}\n' if header is not None else '' 
    for i, row in enumerate(list2d):
        for j, v in enumerate(row):
            v_str = str(v).rjust(val_width)
            if (i,j) in highlights: 
                v_str = f'\033[31m{v_str}\033[0m'
            res_str += f' {v_str}'
        res_str += '\n'
    new_line_cnt = res_str.count('\n')
    res_str += f'\033[{new_line_cnt}A'
    print(res_str, end='')
    sleep(sleep_sec)

# --- sample ---
n = 3
list2d = [ [0]*n for _ in range(n)]
for i in range(n):
    for j in range(n):
        list2d[i][j] = 3**(i+j)
        print_2d_overwrite(list2d, val_width=3, header=(i,j), highlights=[(i,j)])

Der Betriebszustand ist ↓ sample.gif

Die Punkte sind wie folgt.

(Hinzugefügt am 19.11.2020) In den Kommentaren erhielt ich einen technischen Schreibstil.

Standardausgabe überschreiben

In Verbindung stehender Artikel wurde gestern veröffentlicht und ich war überrascht. Der Artikel, auf den ich zur Implementierung verwiesen habe, ist hier. Diese Artikel reichen aus, um sie zu erklären, daher werde ich diesmal nur die wichtigsten Punkte erläutern.

Sie können den Cursor mit \ 033 [nA" n Zeilen nach oben bewegen. Das zweidimensionale Array, das Sie anzeigen möchten, wird in die Zeichenfolge "(res_str)" konvertiert, die Anzahl der darin enthaltenen Zeilenumbrüche "\ n" wird gezählt und am Ende der Zeichenfolge hinzugefügt. Es ist einfacher, die Zeichenfolge f zu verwenden. Vergessen Sie nicht "end =" in "print".

new_line_cnt = res_str.count('\n')
res_str += f'\033[{new_line_cnt}A'
print(res_str, end='')

Wertelängen ausrichten (Ziffern anzeigen)

Es ist schwer zu erkennen, ob die Längen nicht gleich sind

3  5  345
235  -48  123
1  2  3

Daher möchte ich die Länge (Anzeigeziffer) jedes Elements gleich machen.

    3     5   345
  235   -48   123
    1     2     3

Dieses Mal machen wir das mit str.rjust (n). Die Zeichenfolge ist rechtsbündig und der Teil, der für n Zeichen nicht ausreicht, wird mit den im zweiten Argument angegebenen Zeichen gefüllt (wenn nichts angegeben ist, wird er mit Leerzeichen gefüllt).

v_str = str(v).rjust(val_width)

Ändern Sie die Farbe der Zeichenfolge

\ 033 [31m Zeichenfolge, deren Farbe Sie ändern möchten \ 033 [0m ist OK. Die Farbe kann von 30 m bis 37 m eingestellt werden. 31m ist rot. (Für Details klicken Sie hier](https://www.nomuramath.com/kv8wr0mp/))

In der Funktion ändern wir die Farbe des für "Highlights" angegebenen Werts. Dies ist auch einfach, wenn Sie die Zeichenfolge f verwenden.

if (i,j) in highlights: 
    v_str = f'\033[31m{v_str}\033[0m'

abschließend

Ich habe es dem Competition Pro-Snippet hinzugefügt, da es zum Debuggen verwendet werden kann. Ich dachte, es wäre bequemer, wenn der "Schlaf" -Teil als Tasteneingabe verwendet würde, aber auf einem Mac war es mühsam, die "Tastatur" ohne "Sudo" zu verwenden. Lassen Sie sie also so, wie sie ist.

Recommended Posts

Ich habe eine Funktion erstellt, um die Bewegung eines zweidimensionalen Arrays (Python) zu sehen.
Ich habe eine Funktion erstellt, um das Modell von DCGAN zu überprüfen
Ich habe eine Funktion zum Trimmen des Bildes von Python openCV erstellt. Verwenden Sie sie daher bitte.
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Python: Ich möchte die Verarbeitungszeit einer Funktion genau messen
Ich habe ein Skript erstellt, das das aktive Fenster mit win32gui von Python aufzeichnet
[Python3] Definition eines Dekorators, der die Ausführungszeit einer Funktion misst
[Python] Eine einfache Funktion zum Ermitteln der Mittelkoordinaten eines Kreises
Holen Sie sich den Aufrufer einer Funktion in Python
Ausgabe in Form eines Python-Arrays
Ich habe ein Tool erstellt, um die Ausführungszeit von cron zu schätzen (+ PyPI-Debüt)
[Circuit x Python] So ermitteln Sie die Übertragungsfunktion eines Schaltkreises mit Lcapy
[Python] So sortieren Sie nach dem N-ten M-ten Element eines mehrdimensionalen Arrays
Ich habe einen Appdo-Befehl erstellt, um Befehle im Kontext der App auszuführen
Ich möchte eine Liste der WebDAV-Dateien im Modul Anfragen anzeigen
Ich habe ein Tool zum automatischen Sichern der Metadaten der Salesforce-Organisation erstellt
[Python] Ich habe versucht, den Typnamen als Zeichenfolge aus der Typfunktion abzurufen
Ich habe ein Python-Modul erstellt, um Kommentare zu übersetzen
Python Hinweis: Das Rätsel, einer Variablen eine Variable zuzuweisen
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe einen Python-Text gemacht
[Python] Ich habe eine App erstellt, um die feine Sprachunterscheidung von englischen Wörtern zu üben.
[Python / C] Ich habe versucht, ein Gerät zu erstellen, das den Bildschirm eines PCs drahtlos aus der Ferne scrollt.
Versuchen Sie, die Funktionsliste des Python> os-Pakets abzurufen
Ich habe ein Paket erstellt, um Zeitreihen mit Python zu filtern
Ich möchte viele Prozesse von Python aus starten
Ich habe ein Punktbild des Bildes von Irasutoya gemacht. (Teil 1)
[Python] Ich habe versucht, die folgende Beziehung von Twitter zu visualisieren
Ich möchte die Authentizität eines Elements eines numpy-Arrays bestimmen
Ich habe versucht, die Mail-Sendefunktion in Python zu implementieren
Ich habe ein wenig versucht, das Verhalten der Zip-Funktion
Ich möchte die Natur von Python und Pip kennenlernen
Ich habe versucht, das lokale Minimum der Goldstein-Preis-Funktion zu bekämpfen
Django super Einführung von Python-Anfängern! Teil 6 Ich habe versucht, die Login-Funktion zu implementieren
Ich habe einen Line-Bot mit Python gemacht!
Ich dachte ein wenig nach, weil Trace Plot von Stan's Parameter schwer zu sehen ist
Ich habe ein Tool erstellt, um die Antwortlinks von OpenAI Gym auf einmal zu erhalten
Ich habe eine Klasse erstellt, um das Analyseergebnis von MeCab in ndarray mit Python zu erhalten
Ich habe mit Python eine Lotterie gemacht.
[Python] Machen Sie die Funktion zu einer Lambda-Funktion
Ich habe auch versucht, die Funktionsmonade und die Zustandsmonade mit dem Generator in Python nachzuahmen
Ich schrieb einen Test in "Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren".
Ich habe mit Python einen Daemon erstellt
Ich habe in Python ein Programm erstellt, das die 1-Minuten-Daten von FX auf eine beliebige Zeit (1 Stunde usw.) ändert.
Ich möchte den Namen der ausgeführten Funktion / Methode erhalten
Ich habe versucht, ein Programm zu erstellen, um die Fehlersuche von Saiseriya zu lösen (Hinweis)
Ich habe eine Bibliothek erstellt, die Konfigurationsdateien mit Python einfach lesen kann
So bestimmen Sie die Existenz eines Selenelements in Python
Ich habe versucht, den Index der Liste mithilfe der Aufzählungsfunktion abzurufen
[Einführung in Python] So teilen Sie eine Zeichenfolge mit der Funktion split
Ich habe eine Python-Bibliothek erstellt, um die API von LINE WORKS aufzurufen
So überprüfen Sie die Speichergröße einer Variablen in Python
[Einführung in Python] Ich habe die Namenskonventionen von C # und Python verglichen.
Ich habe versucht, mit Python einen regulären Ausdruck von "Zeit" zu erstellen
[Einführung in StyleGAN] Ich habe mit "The Life of a Man" ♬ gespielt
Ich möchte den Anfang des nächsten Monats mit Python ausgeben