Maison >développement back-end >Tutoriel Python >Pourquoi la modification de \'vec\' change-t-elle également \'v\' en Python ?

Pourquoi la modification de \'vec\' change-t-elle également \'v\' en Python ?

DDD
DDDoriginal
2024-11-03 04:08:31261parcourir

Why Does Modifying 'vec' Also Change 'v' in Python?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn