Maison >développement back-end >Tutoriel Python >Comment créer des copies véritablement indépendantes de listes Python ?

Comment créer des copies véritablement indépendantes de listes Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-25 00:57:17408parcourir

How to Create Truly Independent Copies of Python Lists?

Création de clones non modifiables de listes Python

Lors de l'attribution de new_list à my_list, il ne s'agit pas d'une véritable création de liste séparée. Au lieu de cela, il s'agit simplement d'une référence pointant vers la même liste, ce qui entraîne que toute modification apportée à new_list soit reflétée dans my_list.

Copier efficacement les listes

Pour éviter les modifications inattendues de la liste, plusieurs méthodes existent pour le clonage de liste :

  • Méthode list.copy() : (Python 3.3) :
new_list = old_list.copy()
  • Découpage :
new_list = old_list[:]
  • list() Constructeur :
new_list = list(old_list)
  • copy.copy() Fonction :
import copy
new_list = copy.copy(old_list)
  • copy.deepcopy() Fonction : (Copie les éléments imbriqués récursivement)
import copy
new_list = copy.deepcopy(old_list)

Exemple :

class Foo:
    def __init__(self, val):
        self.val = val

foo = Foo(1)

a = ['foo', foo]
b = a.copy()
c = a[:]
d = list(a)
e = copy.copy(a)
f = copy.deepcopy(a)

a.append('baz')
foo.val = 5

print(f'original: {a}\nlist.copy(): {b}\nslice: {c}\nlist(): {d}\ncopy: {e}\ndeepcopy: {f}')

Sortie :

original: ['foo', Foo(5), 'baz']
list.copy(): ['foo', Foo(5)]
slice: ['foo', Foo(5)]
list(): ['foo', Foo(5)]
copy: ['foo', Foo(5)]
deepcopy: ['foo', Foo(1)]

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