Maison  >  Article  >  développement back-end  >  Pourquoi la modification d'une liste en affecte-t-elle une autre en Python ?

Pourquoi la modification d'une liste en affecte-t-elle une autre en Python ?

DDD
DDDoriginal
2024-11-02 12:37:02908parcourir

Why Does Modifying One List Affect Another in Python?

Listes liées de manière inattendue en Python

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!

Déclaration:
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