Maison > développement back-end > Tutoriel Python > Pourquoi l'attribution d'une liste à une nouvelle variable en Python ne crée-t-elle pas une copie distincte ?

Pourquoi l'attribution d'une liste à une nouvelle variable en Python ne crée-t-elle pas une copie distincte ?

Linda Hamilton
Libérer: 2024-11-03 07:43:30
original
574 Les gens l'ont consulté

Why does assigning a list to a new variable in Python not create a separate copy?

Mutation de liste inattendue

Lors de la création d'une liste comme v = [0,0,0,0,0,0,0,0 ,0], vous pouvez supposer que l'attribution d'une nouvelle liste à une variable crée une référence distincte. Cependant, un code comme celui-ci peut démontrer un comportement inattendu :

<code class="python">vec = v
vec[5] = 5</code>
Copier après la connexion

Vec et v contiennent désormais la valeur 5 à l'index 5. Pourquoi cela se produit-il ?

Affectation de référence

En Python, les listes sont des objets mutables. L'attribution de vec = v ne crée pas de nouvelle copie de la liste. Au lieu de cela, il attribue une référence à v. Vec et v pointent tous deux vers le même objet de liste sous-jacent en mémoire.

Toute modification apportée à vec ou v affectera la liste d'origine car il s'agit de la même liste. C'est pourquoi lorsque vec[5] est modifié, v change également.

Solution

Pour créer une copie distincte de la liste, utilisez la fonction list() :

<code class="python">vec = list(v)</code>
Copier après la connexion

Cela crée un nouvel objet de liste qui contient une copie des éléments de v. Toute modification apportée à vec n'affectera pas v, et vice versa.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal