[PYTHON] Informationen zur kumulativen Zuordnung von Liste und Numpy-Array

Gibt an, ob das Objekt geändert werden kann

In der Python-Liste numpy Array a = a + b a + = b (kumulative Zuordnung genannt) Es ist zu beachten, dass das Verhalten von unterschiedlich ist.

Führen Sie in der kumulativen Python-Zuweisung nach Möglichkeit direkte Operationen aus. Das heißt, wenn der Inhalt des Objekts geändert werden kann, wird kein neues Objekt erstellt.

Daher ist es wichtig, ob das Objekt veränderlich oder unveränderlich ist. Numerische Typen sind unveränderliche Objekte und Listen sind veränderbare Objekte.

Experimentieren Sie mit der ID-Funktion

Es gibt eine ID-Funktion als integrierte Funktion von Python. Sie können den Identifikationswert des Objekts mithilfe der ID-Funktion abrufen. Der Identifikationswert ist garantiert für die Lebensdauer des Objekts eindeutig und konstant. Also werde ich den Unterschied zwischen den beiden mit dieser ID-Funktion erklären.

Numerischer Typ

Zuerst von "a + = 1".

test1.py


a = 1
print (id(a))
a += 1
print (id(a))

test1.py Ausführungsergebnis


1663828464
1663828496

Es ist ersichtlich, dass sich der Identifikationswert von a geändert hat. In Python sind numerische Typen unveränderliche Objekte. Dies liegt daran, dass sich das Referenzziel von a in Abhängigkeit von der Verarbeitung von "a + = 1" ändert. Als nächstes schauen wir uns a = a + 1 an.

test2.py


a = 1
print (id(a))
a = a + 1
print (id(a))

test2.py Ausführungsergebnis


1656226288
1656226320

Immerhin ist zu erkennen, dass sich der Identifikationswert von a geändert hat. Bisher sollte es kein Problem geben.

aufführen

Dies ist das Hauptthema.

test3.py


a = [0,1,2]
b = [2,3,4]
print (id(a))
a  =  a + b
print (id(a))

test3.py Ausführungsergebnis


53560776
53560200

Der Identifikationswert von a hat sich geändert. Nächster,

test4.py


a = [0,1,2]
b = [2,3,4]
print (id(a))
a  += b
print (id(a))

test4.py Ausführungsergebnis


53560008
53560008

Diesmal hat sich der Identifikationswert von a nicht geändert.

numpy Array

Ich werde die experimentellen Ergebnisse für die Numpy-Sequenz weglassen, weil es langweilig sein wird. Das Ergebnis ähnelt einer regulären Liste. Das offizielle Tutorial von numpy besagt außerdem Folgendes.

Arithmetic operators on arrays apply elementwise. A new array is created and filled with the result.

Some operations, such as += and *=, act in place to modify an existing array rather than create a new one.

Zusammenfassung

a = a + b a += b Es ist zu beachten, dass die Beschreibung wie nicht immer gleichwertig ist.

Recommended Posts

Informationen zur kumulativen Zuordnung von Liste und Numpy-Array
Über alles von numpy
Über die Zuweisung von numpy.ndarray
Über Importfehler von numpy und scipy in anaconda
Über alle von numpy (2.)
Über Numpy Array und Asarray
So sortieren Sie eine Liste von 2D-Arrays, Wörterbüchern und proprietären Klassen
Über Numpy
Über _ und __
Über die linke und rechte Rechtfertigung von Kivy Label
Über das Verhalten von copy, deepcopy und numpy.copy
Angeben des Bereichs von Ruby- und Python-Arrays
Über flache und tiefe Kopien von Python / Ruby
Über Probleme und Lösungen von OpenPyXL (Version 3.0)
Liste und Numpy
Über Numpy Broadcast
Denken Sie an das Rack und WSGI der nächsten Generation
Persönliche Hinweise zur Integration von vscode und anaconda
[Python] Kapitel 01-02 Über Python (Ausführung und Installation der Entwicklungsumgebung)