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
Libérer: 2024-12-25 00:57:17
original
403 Les gens l'ont consulté

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()
Copier après la connexion
  • Découpage :
new_list = old_list[:]
Copier après la connexion
  • list() Constructeur :
new_list = list(old_list)
Copier après la connexion
  • copy.copy() Fonction :
import copy
new_list = copy.copy(old_list)
Copier après la connexion
  • copy.deepcopy() Fonction : (Copie les éléments imbriqués récursivement)
import copy
new_list = copy.deepcopy(old_list)
Copier après la connexion

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}')
Copier après la connexion

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

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