Maison > développement back-end > Tutoriel Python > Comment cloner correctement des listes en Python et éviter les modifications involontaires ?

Comment cloner correctement des listes en Python et éviter les modifications involontaires ?

DDD
Libérer: 2024-12-21 04:28:11
original
455 Les gens l'ont consulté

How to Properly Clone Lists in Python and Avoid Unintended Modifications?

Clonage de listes en Python : comment éviter les modifications inattendues

Attribution d'une nouvelle variable à une liste existante (par exemple, new_list = my_list) dans Python ne crée pas de liste séparée mais copie simplement la référence à la liste d'origine. Cela signifie que toutes les modifications apportées à new_list seront reflétées dans my_list et vice versa.

Raisons du comportement inattendu de la liste :

Le comportement se produit parce que Python utilise des références mémoire pour des objets comme des listes. Lorsque vous affectez une nouvelle variable à une liste, elle ne duplique pas la liste mais pointe vers la même structure de données sous-jacente. Toute modification apportée à une référence affectera donc toutes les références à la même structure de données.

Options de clonage pour éviter les modifications inattendues :

Pour créer une copie véritablement indépendante d'une liste , vous avez plusieurs options :

  1. list.copy() : Le list.copy() intégré renvoie une nouvelle liste qui est une copie de l'original.
  2. Slicing : L'utilisation de la syntaxe de découpage (new_list = old_list[:]) sur une liste copie les éléments de la liste d'origine dans une nouvelle liste.
  3. Constructeur list() : Le constructeur list() peut être utilisé pour créer une nouvelle liste à partir d'une liste existante : new_list = list(old_list).
  4. copy.copy(): La fonction copy.copy() du module de copie crée une copie superficielle de la liste, ce qui signifie que les listes imbriquées seront toujours partager des références avec la liste d'origine.
  5. copy.deepcopy() : La fonction copy.deepcopy() du module de copie crée une copie complète du list, en copiant également tous les éléments imbriqués. C'est l'option la plus complète mais aussi la plus lente.

Exemple :

my_list = [1, 2, 3]
new_list = my_list.copy()
new_list.append(4)
print(my_list)  # Output: [1, 2, 3] (unchanged)
Copier après la connexion

Dans cet exemple, new_list est une copie distincte et indépendante de my_list , donc l'ajout d'un élément à new_list n'affecte pas my_list.

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