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.
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.
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.
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.
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.
a = a + b
a += b
Es ist zu beachten, dass die Beschreibung wie nicht immer gleichwertig ist.
Recommended Posts