Liste Python, dans un tableau numpy
a = a + b
ʻA + = b` (appelée affectation cumulative)
Il est à noter que le comportement de est différent.
Dans l'affectation cumulative Python, effectuez des opérations sur place si possible. Autrement dit, si le contenu de l'objet peut être modifié, un nouvel objet n'est pas créé.
Par conséquent, il est important que l'objet soit mutable ou immuable. Les types numériques sont des objets immuables et les listes sont des objets modifiables.
Il existe une fonction id en tant que fonction intégrée de Python. Vous pouvez obtenir la valeur d'identification de l'objet en utilisant la fonction id. La valeur d'identification est garantie unique et constante pendant toute la durée de vie de l'objet. Donc, je vais expliquer la différence entre les deux en utilisant cette fonction id.
D'abord à partir de ʻa + = 1`.
test1.py
a = 1
print (id(a))
a += 1
print (id(a))
test1.résultat d'exécution py
1663828464
1663828496
On peut voir que la valeur d'identification de a a changé.
En Python, les types numériques sont des objets immuables,
Ceci est dû au fait que la destination de référence d'un change en fonction du traitement de ʻa + = 1. Ensuite, regardons ʻa = a + 1
.
test2.py
a = 1
print (id(a))
a = a + 1
print (id(a))
test2.résultat d'exécution py
1656226288
1656226320
Après tout, on peut voir que la valeur d'identification de a a changé. Il ne devrait y avoir aucun problème pour l'instant.
C'est le sujet principal.
test3.py
a = [0,1,2]
b = [2,3,4]
print (id(a))
a = a + b
print (id(a))
test3.résultat d'exécution py
53560776
53560200
La valeur d'identification de a a changé. prochain,
test4.py
a = [0,1,2]
b = [2,3,4]
print (id(a))
a += b
print (id(a))
test4.résultat d'exécution py
53560008
53560008
Cette fois, la valeur d'identification de a n'a pas changé.
J'omettrai les résultats expérimentaux de la séquence numpy car ce sera fastidieux. Le résultat est similaire à une liste régulière. Le tutoriel officiel de numpy indique également ce qui suit.
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
Il est à noter que la description telle que n'est pas toujours équivalente.
Recommended Posts