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
Libérer: 2024-11-03 04:08:31
original
248 Les gens l'ont consulté

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>
Copier après la connexion

É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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal