Maison > développement back-end > Tutoriel Python > Pourquoi la mise à jour d'une copie superficielle d'un dictionnaire Python ne modifie-t-elle pas l'original ?

Pourquoi la mise à jour d'une copie superficielle d'un dictionnaire Python ne modifie-t-elle pas l'original ?

Linda Hamilton
Libérer: 2024-11-24 06:37:10
original
689 Les gens l'ont consulté

Why Doesn't Updating a Shallow Copy of a Python Dictionary Change the Original?

Pourquoi le dictionnaire de copie superficielle ne met pas à jour l'original

Lorsqu'il s'agit de structures de données, il est crucial de comprendre les nuances de la copie. Python propose deux méthodes de copie principales : la copie superficielle et la copie approfondie. Cet article examine la différence entre ces techniques, en examinant spécifiquement pourquoi la mise à jour d'une copie superficielle n'a pas d'impact sur le dictionnaire d'origine.

Copie superficielle de Python

dict.copy() effectue une copie superficielle d'un dictionnaire, ce qui signifie qu'il crée une nouvelle référence au même contenu. Le contenu n'est pas dupliqué par valeur mais partage la même référence mémoire.

Considérons l'exemple :

original = dict(a=1, b=2)
new = original.copy()
new.update({'c': 3})
Copier après la connexion

Après la copie superficielle, toutes les modifications apportées à la nouvelle référence (nouvelle) seront modifier le dictionnaire original (original) car ils pointent vers les mêmes données sous-jacentes. Dans l'exemple, l'ajout de « c » : 3 à la copie superficielle met également à jour le dictionnaire d'origine.

Comprendre la copie profonde et la copie superficielle

Lorsque la copie superficielle ne crée que de nouvelles références à des données existantes, la copie profonde crée des objets entièrement nouveaux. Le contenu est dupliqué de manière récursive. Cela garantit que toute modification apportée à la nouvelle référence n'affecte pas l'original.

L'utilisation de copy.deepcopy() effectue une copie complète. Dans ce cas, toute modification apportée à la nouvelle référence (c) n'impactera pas le dictionnaire d'origine (a).

Conclusion

La copie superficielle en Python implique de créer de nouvelles des références à des données existantes, tandis que la copie approfondie crée des objets entièrement nouveaux avec des contenus dupliqués. Comprendre cette distinction est essentiel lorsqu'il s'agit de structures de données complexes, car elle détermine l'impact des modifications apportées à un objet sur les 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!

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