Dieser Artikel ist der 14. Tagesartikel von NCC Advent Calender 2019.
Beim Schreiben eines Programms ist ein Array wichtig.
Es gibt jedoch ein ** Python-Array-ähnliches Problem mit zu vielen **.
Auch mit Standard-Python-Funktionen
list
,dict
,set
,tuple
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.
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.
list
dict
set
tuple
numpy
numpy.array
/numpy.ndarray
numpy.matrix
list
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.)
--Leicht zu handhaben
――Sie können es implementieren, indem Sie einfach list
verwenden, ohne über schwierige Dinge nachzudenken.
――Es wird mit zunehmender Anzahl von Dimensionen schwer zu verstehen
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
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/'
}
--Einfach zu verstehen
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
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]
dict
(leicht) schwer zu verstehen.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
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.
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.
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
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.
numpy.array ()
einschließen, auch in mehreren Dimensionen, nicht in numpy.ndarray
.
Der Unterschied zu "list" besteht darin, dass ** Sie Operationen zwischen Arrays ausführen können **.
Sie können jedoch kein leeres numpy.array
erstellen.
Lassen Sie uns von "Liste" konvertieren.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.
――Es ist schwierig zu handhaben, wenn Sie sich nicht daran gewöhnen
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
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
Hier ist ein Diagramm, das irgendwie den Ablauf zeigt, wenn Sie entscheiden, welchen Sie persönlich verwenden möchten.
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)
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