Lorsque vous travaillez avec des listes en Python, des comportements inattendus peuvent survenir. Comprenons pourquoi la modification d'une liste en affecte une autre de manière inattendue.
Problème :
Considérez le code Python suivant :
<code class="python">v = [0, 0, 0, 0, 0, 0, 0, 0, 0] vec = v # Assignment by reference vec[5] = 5</code>
Après l'exécution de ce code, v et vec affichent tous deux la valeur modifiée à l'index 5 :
>>> print(vec) [0, 0, 0, 0, 0, 5, 0, 0, 0] >>> print(v) [0, 0, 0, 0, 0, 5, 0, 0, 0]
Pourquoi v change-t-il même s'il n'a pas été explicitement modifié ?
Comprendre le problème :
En Python, lorsque vous attribuez une liste à une nouvelle variable, vous ne créez pas de copie ; au lieu de cela, vous créez une référence. Cela signifie que v et vec pointent vers le même objet de liste sous-jacent en mémoire.
Solution :
Pour avoir deux listes distinctes avec des valeurs identiques, vous devez créer une copie à l'aide du constructeur list() :
<code class="python">vec = list(v) # Creates a copy</code>
Maintenant, lorsque vous apportez des modifications à vec, v ne sera pas affecté.
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!