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