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
Libérer: 2024-11-24 02:40:11
original
247 Les gens l'ont consulté

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[:]
Copier après la connexion

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[:]
Copier après la connexion

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)
Copier après la connexion

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