Maison > développement back-end > Tutoriel Python > Comment créer une véritable copie approfondie d'une liste en Python ?

Comment créer une véritable copie approfondie d'une liste en Python ?

DDD
Libérer: 2024-12-13 19:48:20
original
289 Les gens l'ont consulté

How to Create a True Deep Copy of a List in Python?

Comment créer une copie complète d'une liste ?

En Python, l'attribution d'une liste à une nouvelle variable à l'aide de list() ne aboutir à une copie complète. Cela crée simplement une copie superficielle, où les éléments internes font toujours référence à la liste originale. Cela peut conduire à des mutations inattendues.

Par exemple, considérons le code suivant :

E0 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for k in range(3):
    E0_copy = list(E0)
    E0_copy[k][k] = 0
print(E0)  # [[0, 2, 3], [4, 0, 6], [7, 8, 0]]
Copier après la connexion

Dans cet exemple, E0_copy n'est pas une copie complète car list() ne duplique que la liste la plus externe. Les éléments internes pointent toujours vers les mêmes objets dans E0. Lorsque nous modifions E0_copy, ces changements sont également reflétés dans E0.

Pour créer une véritable copie complète, vous devez utiliser la fonction copy.deepcopy(). Cette fonction copie récursivement tous les éléments de la liste, garantissant qu'ils sont complètement indépendants de la liste d'origine.

Voici comment écrire l'exemple précédent en utilisant une copie complète :

import copy

E0 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for k in range(3):
    E0_copy = copy.deepcopy(E0)
    E0_copy[k][k] = 0
print(E0)  # [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Copier après la connexion

Avis qu'après modification de E0_copy, la liste originale E0 reste inchangée. En effet, copy.deepcopy() crée une toute nouvelle liste qui n'est pas liée à l'original.

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