Maison >développement back-end >Tutoriel Python >Comment fonctionne l'affectation de liste de Python et comment puis-je éviter un comportement inattendu lors de la modification de listes imbriquées ?

Comment fonctionne l'affectation de liste de Python et comment puis-je éviter un comportement inattendu lors de la modification de listes imbriquées ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-29 01:10:11972parcourir

How Does Python's List Assignment Work, and How Can I Avoid Unexpected Behavior When Modifying Nested Lists?

Comprendre l'affectation de listes en Python

En Python, les listes sont des objets mutables, ce qui signifie que leur contenu peut être modifié. Lors de l'affectation d'une liste à une autre variable, les deux variables font référence au même objet de liste sous-jacent. C'est ce qu'on appelle l'affectation par référence.

Problème de passage par référence

Ce comportement peut entraîner des conséquences inattendues lors de la modification de listes imbriquées. Par exemple, modifier une valeur dans « a » affectera également « b » puisqu'ils partagent le même objet de liste de sauvegarde :

a = ['help', 'copyright', 'credits', 'license']
b = a
b.append('XYZ')
print(a)  # ['help', 'copyright', 'credits', 'license', 'XYZ']

Passer des listes par valeur

Pour transmettre une liste par valeur en Python, vous devez créer une copie de la liste d'origine. Vous pouvez le faire en utilisant l'opérateur de découpage :

b = a[:]

Cela crée un nouvel objet de liste avec le même contenu que « a ». Désormais, l'ajout à 'b' n'affectera pas 'a' :

b.append('XYZ')
print(a)  # ['help', 'copyright', 'credits', 'license']
print(b)  # ['help', 'copyright', 'credits', 'license', 'XYZ']

Conclusion

Comprendre l'affectation de liste en Python est crucial pour éviter un comportement involontaire lors de la modification d'imbrications listes. En utilisant l'opérateur de découpage, vous pouvez transmettre des listes par valeur et vous assurer que les modifications apportées à l'une ne se propagent pas aux autres.

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