Maison > développement back-end > Tutoriel Python > Comment copier correctement une liste en profondeur en Python ?

Comment copier correctement une liste en profondeur en Python ?

Patricia Arquette
Libérer: 2025-01-04 02:55:38
original
752 Les gens l'ont consulté

How to Properly Deep Copy a List in Python?

Comment copier en profondeur une liste ?

Lorsque vous essayez de créer une copie complète d'une liste, il est crucial d'éviter d'utiliser la liste ( ) constructeur. Bien que list() puisse sembler générer une liste distincte, elle n'effectue qu'une copie superficielle, préservant les références aux éléments de la liste d'origine. Par conséquent, toute modification apportée à la nouvelle liste affectera également l'original.

Solution : copie approfondie à l'aide de copy.deepcopy()

Pour une véritable copie approfondie, la copie La fonction .deepcopy() doit être utilisée. Cette fonction clone de manière récursive tous les éléments de la liste, garantissant que la nouvelle liste est indépendante de l'originale.

Exemple :

import copy

# Original list
E0 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# Shallow copy
E0_copy1 = list(E0)

# Deep copy
E0_copy2 = copy.deepcopy(E0)

# Modify shallow copy
E0_copy1[0][0] = 0

# Observe that changes to the shallow copy also affect the original
print(E0)  # Output: [[0, 2, 3], [4, 5, 6], [7, 8, 9]]

# Modify deep copy
E0_copy2[1][1] = 0

# Note that changes to the deep copy do not affect the original
print(E0)  # Output: [[0, 2, 3], [4, 5, 6], [7, 8, 9]]
Copier après la connexion

Explication :

list() initialise une nouvelle liste en référençant les éléments d'origine. Par conséquent, toute modification apportée à la copie se propage à la liste d'origine.

copy.deepcopy(), en revanche, crée des copies de tous les éléments imbriqués dans la liste, ce qui donne une copie totalement indépendante. Les modifications apportées à la copie complète n'ont pas d'impact sur la liste originale.

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 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