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