Vergleichen wir die Python-Array-ähnlichen Typen

Dieser Artikel ist der 14. Tagesartikel von NCC Advent Calender 2019.

Einführung

Beim Schreiben eines Programms ist ein Array wichtig. Es gibt jedoch ein ** Python-Array-ähnliches Problem mit zu vielen **. Auch mit Standard-Python-Funktionen listdictsettuple es gibt. Wenn Sie eine Bibliothek wie "numpy" verwenden, finden Sie außerdem ähnlichere.

Dieses Mal werde ich sie erklären, damit sie in den folgenden vier Punkten richtig verwendet werden können.

  1. Übersicht
  2. Gute Punkte
  3. Schlechter Ort
  4. Eindrücke

Da dies ein Artikel zur ** ordnungsgemäßen Verwendung ** ist, werde ich nicht auf die detaillierte Verwendung eingehen. Außerdem werde ich es unter der Annahme schreiben, dass ich irgendwie weiß, was das Array ist. Ich werde so viel wie möglich mit einfachen Worten erklären.

Zielgruppe

Was zu holen

Python-Standardfunktionen

Bibliothek

numpy

Hauptgeschichte

list

Überblick

Die "Liste" ist einfach ** die grundlegendste **. Es ist dasselbe wie ein allgemeines Array in anderen Sprachen, und in Python wird es allgemein als "Liste" bezeichnet. Das Symbol ist "[]". Wenn es also von diesem umgeben ist und viele "," darin enthalten sind, stellen Sie es sich als Liste vor.

In Python kann die Liste mehrere Typen enthalten. Sie können auch beliebig viele Werte eingeben. Darüber hinaus hat es die Funktion eines Arrays, das allgemein genannt wird.

Wenn ich später das Folgende erkläre, denke ich, dass ich es oft mit "Liste" vergleiche, daher denke ich, dass es schön wäre, wenn Sie die Natur von "Liste" verstehen könnten, während Sie es betrachten. (Da es ein normaler Typ ist, gibt es nicht viele Erklärungen.)

Guter Punkt

--Leicht zu handhaben ――Sie können es implementieren, indem Sie einfach list verwenden, ohne über schwierige Dinge nachzudenken.

Schlechter Cousin

――Es wird mit zunehmender Anzahl von Dimensionen schwer zu verstehen

Impressionen

Der Ursprung, gut oder schlecht. Selbst mit "numpy" oder "pandas" ist es auch schwierig, es in "list" umzuwandeln und dann zu verwenden. Es ist auch "Liste", wenn die Länge in einer Dimension unbestimmt ist oder wenn die Reihenfolge eine Bedeutung hat, die Zahl jedoch keine Bedeutung hat. Es ist jedoch nicht sehr geeignet für mehrdimensionale. (Entwerfen Sie überhaupt nicht zu viele Dimensionen.) Es ist erfrischend, mit "numpy" für numerische Werte und "dict" für komplexe Daten zu kombinieren.

dict

Überblick

Dies ist das sogenannte ** assoziative Array **. In Python ist es ein Wörterbuchtyp oder Wörterbuch (kurz dict). Das Symbol ist "{}" und jedes Element ist durch ":" wie "{key: value}" verbunden. Ich werde nicht mit Beispielen im Detail erklären. Bitte beachten Sie die Referenz usw.

Ich denke, der "Schlüssel" -Typ von "Dikt" könnte alles sein, aber es ist einfacher zu verstehen, wenn Sie eine Zeichenfolge oder eine Ganzzahl verwenden. Wenn der Inhalt voll ist, ist es auch einfacher zu sehen, indem Sie den "Schlüssel" drücken. Lassen Sie uns auch die Einrückungen ausrichten. (Wie json) Hier ist ein Beispiel.


ncc = { 'name': 'ncc',
        'full name': 'nakano computer club',
        'estimate': 2015,
        'web site': 'https://meiji-ncc.tech/'
        }

Guter Punkt

--Einfach zu verstehen

Schlechter Cousin

Impressionen

Wenn der Wert und sein Name wichtig sind, liegt es an Ihnen! Selbst mit Zahlen ist "diktieren" einfacher zu handhaben, wenn die Intervalle unregelmäßig sind. Vor der Konvertierung in "DataFrame" von "Pandas" (Bibliothek) wird es häufig einmal mit "dict" zusammengefasst. Weil es einfacher zu handhaben ist. Ich denke, Sie sollten es in dem Bild verwenden, das "Schlüssel" und "Wert" verbindet. Es ist bequem, mit json umzugehen. .. (Einfach zu lesen und zu schreiben mit json library)

set

Überblick

Der einfache Ausdruck für set ist ** no cover list **. Das Symbol ist "{}", was mit "dikt" identisch ist, jedoch nicht ":" verwendet. Wie bei "Liste" sind die Werte nach "," angeordnet. Wenn es also von "{}" umgeben ist und viele "," vorhanden sind, ist es "gesetzt". Genau genommen handelt es sich um eine Menge. Sie können also auch Set-Operationen ausführen. (Ich werde es hier nicht anfassen)

list kann den gleichen Wert haben wie [0, 1, 2, 1, 0], aber nicht mit set. Das Konvertieren der obigen "Liste" in "Set" ergibt "{0, 1, 2}". Dies ist bis auf Zahlen gleich.

Um es anders herum auszudrücken: Wenn Sie die Abdeckung entfernen möchten, können Sie sie in "Set" konvertieren. In diesem Fall müssen Sie es, wenn Sie es erneut als Liste behandeln möchten, vom Anfang von "set" in "list" konvertieren und in die Liste zurücksetzen. Ich werde ein Beispiel schreiben.

list_duplicate = [0, 1, 2, 2, 1, 0, 3]
list_non_duplicate = list(set(list_duplicate))
print(list_non_duplicate) # out: [0, 1, 2, 3]

Guter Punkt

Schlechter Cousin

Impressionen

Es wird von Anfang an selten in "set" verwendet. Es wird häufig aus der Liste konvertiert, wenn Sie das Cover entfernen oder die gemeinsamen Teile der Elemente mehrerer Listen extrahieren möchten. Daher sollten Sie denken, dass es verwendet wird, wenn Sie zum Zeitpunkt der Implementierung einen kollektiven Ansatz verfolgen.

tuple

Überblick

Sollte "Tupel" als "etwas steife" Liste ** bezeichnet werden? Es gibt eine kleine Angewohnheit. Das Symbol ist ().

Es ist im Grunde wie "Liste", aber es ist anders. Grob gesagt kann ich mich nicht mit dem anlegen, was ich gemacht habe. Sie können danach einen weiteren Taple hinzufügen. (1) Sie können den Taple auch selbst in etwas ganz anderes ändern. (2) Außerdem können Elemente nicht neu geschrieben werden. Es ist ein bisschen schwierig, also zeige ich Ihnen ein Beispiel.

t = (0, 1, 2)
#Fügen Sie Taple dahinter hinzu
t += (3, 4) # OK(1)
#Umschreiben des Taples selbst
t = (0, 1, 2) # OK(2)
#Elemente umschreiben
t[0] = 1 # Error

Es gibt keine Methoden zum Zuweisen oder Löschen. Da die Elemente nicht neu geschrieben werden können, kann die spezifische Reihenfolge nicht geändert werden. Dazu müssen Sie es in "Liste" konvertieren.

Guter Punkt

Schlechter Cousin

Impressionen

Da Python keinen Typ hat, der eine Konstante darstellt (const in js), können Sie dies mit tuple auf Pseudo-Weise tun. Ich benutze es jedoch nicht viel, weil ich nichts Dynamisches tun kann. Der Rückgabewert der Bibliotheksmethode kann "Tupel" sein, also verwende ich ihn einfach dort.


Als nächstes gehen wir zur Erklärung des Array-Systems in der Python-Bibliothek numpy über. Vorher werde ich kurz die "Numpy" erklären.

(Ergänzung) Was ist "numpy"?

numpy ist eine Bibliothek, die Matrixoperationen ausführen kann, die von der linearen Algebra ausgeführt werden. Addition und Subtraktion von Array-Elementen. Es kann verwendet werden, wenn das gesamte Array mit einem numerischen Wert multipliziert wird. Sie können fortgeschrittenere Dinge tun, aber es ist in Ordnung, wenn Sie denken, dass die numerische Berechnung des Arrays bequem ist.

numpy.array/numpy.ndarray

Überblick

Das eindimensionale Array von "numpy" ist "numpy.array". Mehrdimensional ist numpy.ndarray. Die Behandlung ändert sich nicht wesentlich, ob sie eindimensional oder mehrdimensional ist. Da dies eine Bibliothek ist, kann sie nicht durch ein bestimmtes Symbol dargestellt werden. Es wird konvertiert, wenn Sie "list" usw. in "numpy.array ()" einfügen.

import numpy as np

#Definieren Sie eine reguläre Liste
list_num0 = [0, 1, 2, 3, 4]

#In numpy Array konvertieren
np_num0 = np.array(list_num0)
print(np_num0) # out: [0 1 2 3 4]

#Generieren Sie ein numpy-Array direkt
np_num1 = np.array([5, 6, 7, 8, 9])
print(np_num1) # out: [5 6 7 8 9]

#Konvertieren Sie das Numpy-Array in eine Liste
list_num1 = list(np_num1) 
print(list_num1) # out: [5, 6, 7, 8, 9]

#Verdoppeln Sie jede Liste und jedes Numpy-Array
list_num0_twice = 2*list_num0
print(list_num0_twice) # out: [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
np_num0_twice = 2*np_num0
print(np_num0_twice) # out: [0 2 4 6 8]

# list,Versuchen Sie, jedes mit einem numpy-Array hinzuzufügen
list_num_add = list_num0 + list_num1
print(list_num_add) # out: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
np_num_add = np_num0 + np_num1
print(np_num_add) # out: [ 5  7  9 11 13]

Auf diese Weise können Sie mit numpy.array problemlos Operationen innerhalb der Elemente eines Arrays ausführen.

Guter Punkt

Schlechter Cousin

――Es ist schwierig zu handhaben, wenn Sie sich nicht daran gewöhnen

Impressionen

Wenn Sie mathematische Dinge tun möchten, ist es definitiv "numpy". Es passt gut zu einer Bibliothek namens "scipy", die angewandte Berechnungen (wie z. B. Integration) durchführen kann. Wenn Sie sich an viele Berechnungen gewöhnt haben, sollten Sie es versuchen. Es ist einfach zu bedienen, wenn Sie den Unterschied zu "Liste" verstehen.

numpy.matrix

Zusammenfassung

Hier ist eine Zusammenfassung von jedem in einem Wort.

list: Basic dict: Starke Verbindung zwischen Name und Wert set: ungedeckte Liste tuple: Nicht wiederbeschreibbare Liste numpy.array / numpy.ndarray: Spezialisierung für numerische Berechnungen list numpy.matrix: numpy.ndarray und benutze es nicht

Flussdiagramm

Hier ist ein Diagramm, das irgendwie den Ablauf zeigt, wenn Sie entscheiden, welchen Sie persönlich verwenden möchten. flowchart.png

Eigentlich ist es etwas komplizierter, aber bis Sie sich daran gewöhnt haben, sollten Sie so denken. Da "Tupel" nicht verwendet wird, ist es nicht enthalten. (Eigentlich benutze ich "set" nicht zu oft)

Am Ende

Diesmal habe ich die Python-Array-ähnlichen Typen verglichen. Es gibt mehr, wenn Sie die Details und Bibliotheken einschließen. Da dieser Bereich jedoch die Grundlage ist, denke ich, dass sich andere Erkenntnisse verbessern werden, wenn Sie diesen Bereich verstehen können.

Recommended Posts

Vergleichen wir die Python-Array-ähnlichen Typen
Vergleichen Sie die Geschwindigkeit von Python Append und Map
Finden Sie das maximale Python
der Zen von Python
[Python] Teilen Sie das Datum
Vergleichen Sie Zeichenfolgen in Python
python3 Messen Sie die Verarbeitungsgeschwindigkeit.
Auf dem Weg zum Ruhestand von Python2
Finde Fehler in Python
Über das Python-Modul venv
Vergleichen Sie die Schriftarten von Jupyter-Themen
Über die Aufzählungsfunktion (Python)
[Python] Anpassen der Farbleiste
[Python] Holen Sie sich den Vormonat
[Python 2/3] Analysiert die Formatzeichenfolge
Rufen Sie die API mit python3 auf.
Über die Funktionen von Python
[Python] Überprüfen Sie die installierten Bibliotheken
Ich habe die Python-Quelle heruntergeladen
Die Kraft der Pandas: Python
Finden Sie den Maximalwert Python (verbessert)
Überlassen Sie die mühsame Verarbeitung Python
[Python] Überprüfen Sie das aktuelle Verzeichnis und verschieben Sie das Verzeichnis
Extrahieren Sie die xz-Datei mit Python
Abrufen der arXiv-API in Python
Überprüfen Sie das Verhalten beim Zuweisen von Python
[Python] Finden Sie den zweitkleinsten Wert.
[Python] Der Stolperstein des Imports
Erster Python 3 ~ Der Beginn der Wiederholung ~
Python im Browser: Brythons Empfehlung
AtCoder: Python: Papa der Beispieltest.
Klicken Sie in Python auf die Sesami-API
Probieren Sie das Python LINE Pay SDK aus
[Python] Klicken Sie auf die Google Übersetzungs-API
Holen Sie sich den Desktop-Pfad in Python
"Die einfachste Python-Einführungsklasse" geändert
[Python] Was ist @? (Über Dekorateure)
Existenz aus Sicht von Python
Holen Sie sich das Wetter mit Python-Anfragen
Holen Sie sich das Wetter mit Python-Anfragen 2
pyenv-change die Python-Version von virtualenv
Holen Sie sich den Skriptpfad in Python
Im Python-Befehl zeigt Python auf Python3.8
Implementieren Sie das Singleton-Muster in Python
[Python] Passen Sie den Standard für die Farbkarte an
So erhalten Sie die Python-Version
Finden Sie die Bearbeitungsentfernung (Levenshtein-Entfernung) mit Python
[Python] Was ist der sortierte Schlüssel?
Klicken Sie mit Python auf die Etherpad-Lite-API
Installieren Sie das Python-Plug-In mit Netbeans 8.0.2
[Python] Machen Sie die Funktion zu einer Lambda-Funktion
Lassen Sie Python die Befehlsausgabe lesen
Klicken Sie auf die Web-API in Python
[Python] Die potenzielle Feldplanung von Python Robotics verstehen
Ich mochte den Tweet mit Python. ..
Überprüfung der Grundlagen von Python (FizzBuzz)