Listes et références : comprendre l'affectation des variables en Python
En Python, les variables qui font référence à des listes peuvent présenter un comportement inattendu. Considérez le code suivant :
<code class="python">v = [0] * 9 vec = v # Assign v's address to vec vec[5] = 5 # Modify vec at index 5 print(v) # Also prints [0, 0, 0, 0, 0, 5, 0, 0, 0]</code>
Étonnamment, l'impression de 'v' montre qu'il a également été modifié. Ce comportement peut prêter à confusion au début.
Pourquoi 'v' change-t-il ?
La raison du changement de 'v' est que vec et v sont tous deux des références. Lorsque vous attribuez vec = v, vous ne créez pas de nouvelle liste. Au lieu de cela, vous attribuez simplement l'adresse de v, qui est un pointeur de mémoire, à vec.
En conséquence, vec et v pointent tous deux vers la même liste en mémoire. Toute modification apportée à l'une ou l'autre variable affectera la liste sous-jacente, c'est pourquoi « v » change également lorsque « vec » est modifié.
Création de listes séparées
Pour créer deux listes distinctes, vous devez effectuer une copie superficielle :
<code class="python">vec = list(v)</code>
Cela crée une nouvelle liste avec les mêmes valeurs que « v » mais la stocke dans un emplacement mémoire différent. Désormais, modifier 'vec' n'affectera pas 'v'.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!