"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-10
Parcourir:389

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 :

vec = v
vec[5] = 5

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() :

vec = list(v)

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 versa.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3