Maison >développement back-end >Tutoriel Python >Comment puis-je copier efficacement des listes imbriquées en Python sans affecter l'original ?

Comment puis-je copier efficacement des listes imbriquées en Python sans affecter l'original ?

DDD
DDDoriginal
2024-11-24 02:40:11269parcourir

How Can I Efficiently Copy Nested Lists in Python Without Affecting the Original?

Copier efficacement des listes imbriquées en Python

En Python, copier une liste imbriquée peut être délicat en raison de sa nature mutable. La modification d'une liste affectera la liste originale si des techniques de copie superficielle sont utilisées. Pour pallier cette limitation, il est essentiel de comprendre les nuances de la copie de liste en Python et d'opter pour une méthode qui garantit l'indépendance de la liste copiée.

Prenons l'exemple d'une liste 1D :

a = [1, 2]
b = a[:]

Dans ce scénario, une copie superficielle est suffisante, car la modification de b n'affecte pas a. Cependant, la même approche échoue lorsque vous travaillez avec des listes 2D ou imbriquées :

a = [[1, 2], [3, 4]]
b = a[:]

Modifier b dans ce cas affectera également a. Pour créer une copie véritablement indépendante de la liste imbriquée, il faut approfondir des niveaux de copie plus profonds.

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

Copie de Python Le module fournit une solution robuste pour la copie en profondeur de listes imbriquées avec sa fonction deepcopy(). Contrairement à la copie superficielle, cette fonction parcourt de manière récursive la structure imbriquée, créant des copies indépendantes à chaque niveau :

import copy
b = copy.deepcopy(a)

Avec deepcopy() en place, la modification de b n'aura pas d'impact sur la liste d'origine a. Cette technique garantit que les deux listes sont séparées et peuvent être manipulées indépendamment, résolvant ainsi le problème de la modification des listes imbriquées.

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