Maison > développement back-end > Tutoriel Python > 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
Libérer: 2024-11-02 12:37:02
original
920 Les gens l'ont consulté

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>
Copier après la connexion

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]
Copier après la connexion

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>
Copier après la connexion

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!

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