Maison >développement back-end >Tutoriel Python >Comment créer des listes imbriquées véritablement immuables en Python ?

Comment créer des listes imbriquées véritablement immuables en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-20 01:19:031033parcourir

How to Create Truly Immutable Nested Lists in Python?

Création de listes imbriquées immuables en Python

La copie de structures de données en Python peut être délicate, en particulier lorsqu'il s'agit de listes imbriquées. Les copies superficielles utilisant [:] préservent les références aux éléments imbriqués, provoquant des modifications indésirables.

Pour résoudre ce problème, lors de la création de copies de listes imbriquées, envisagez les techniques suivantes :

  • Copie superficielle :

Pour les listes unidimensionnelles, l'opérateur [:] crée une copie superficielle qui fait référence aux mêmes éléments dans mémoire. La modification de la copie n'affecte pas l'original.

a = [1, 2]
b = a[:]
b[0] = 3  # Modifies b, but a remains unchanged
  • Copie approfondie à l'aide du découpage :

Pour les listes imbriquées, le découpage seul est insuffisant pour copies profondes. Pendant qu'il crée une nouvelle liste, les éléments imbriqués sont toujours des références aux originaux.

a = [[1, 2], [3, 4]]
b = a[:]  # Shallow copy
b[0][0] = 5  # Modifies b and a
  • Copie approfondie avec Copy.deepcopy() :

La fonction copy.deepcopy() crée de véritables copies complètes, créant de manière récursive de nouveaux objets pour tous les niveaux de la liste imbriquée. Les modifications apportées à la copie n'affectent pas l'original.

import copy
b = copy.deepcopy(a)
b[0][0] = 6  # Modifies b, but a remains untouched

En employant ces techniques, vous pouvez créer des listes imbriquées immuables qui assurent l'isolement, empêchant ainsi les modifications inattendues de la structure de données d'origine.

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