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
Libérer: 2024-11-20 01:19:03
original
1021 Les gens l'ont consulté

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

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal