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!